diff --git a/CMakeLists.txt b/CMakeLists.txt index e2dfd70..fd6938a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,38 +1,82 @@ # Set minimum CMake version (required for CMake 3.0 or later) cmake_minimum_required(VERSION 2.8.12) - + +option(BUILD_GUI_DEPS "Build Mycroft-GUI Dependencies" OFF) set(QT_MIN_VERSION "5.9.0") set(KF5_MIN_VERSION "5.0.0") # Use Extra CMake Modules (ECM) for common functionality. # See http://api.kde.org/ecm/manual/ecm.7.html # and http://api.kde.org/ecm/manual/ecm-kde-modules.7.html find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_MODULE_PATH}) set(VERSION 2.1.0) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMInstallIcons) +include(ExternalProject) # Locate plasma_install_package macro. find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Plasma I18n Notifications ) find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Quick Core Qml DBus Network + WebSockets ) -add_subdirectory(plugin) add_subdirectory(icons) +add_subdirectory(plugin) + +find_program(MycroftGUI mycroft-gui-app) + +if(NOT MycroftGUI) + message(STATUS "MYCROFT GUI DEPENDENCY NOT FOUND, ADDING AND BUILDING DEPENDENCIES") + +ExternalProject_Add(mycroft-gui + GIT_REPOSITORY https://github.com/MycroftAI/Mycroft-Gui + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DBUILD_REMOTE_TTS=ON + BUILD_COMMAND make + INSTALL_COMMAND sudo make install +) + +ExternalProject_Add(lottie-qml + GIT_REPOSITORY https://github.com/kbroulik/lottie-qml + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON + BUILD_COMMAND make + INSTALL_COMMAND sudo make install +) +endif() + +if(MycroftGUI) + message(STATUS "MYCROFT GUI DEPENDENCY FOUND, SKIPPING BUILDING DEPENDENCIES") +endif() + +if(BUILD_GUI_DEPS) +ExternalProject_Add(mycroft-gui + GIT_REPOSITORY https://github.com/MycroftAI/Mycroft-Gui + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DBUILD_REMOTE_TTS=ON + BUILD_COMMAND make + INSTALL_COMMAND sudo make install +) + +ExternalProject_Add(lottie-qml + GIT_REPOSITORY https://github.com/kbroulik/lottie-qml + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON + BUILD_COMMAND make + INSTALL_COMMAND sudo make install +) +endif() + plasma_install_package(plasmoid org.kde.plasma.mycroftplasmoid) install( DIRECTORY mycroft DESTINATION ${SYSCONF_INSTALL_DIR}) diff --git a/README.md b/README.md index 8910562..b7a032e 100644 --- a/README.md +++ b/README.md @@ -1,163 +1,24 @@ -# Mycroft Plasmoid - -_Mycroft AI Plasmoid and Skills for KDE Plasma 5 Desktop_ - -* [Installation Requirements](#installation-requirements) - + [KDE Neon/Kubuntu](#kde-neon-kubuntu) - + [Fedora](#fedora) -* [Installation Instructions](#installation-instructions) -* [Upgrade from Previous Plasmoid Instructions](#upgrade-from-previous-plasmoid-instructions) -* [Skills Installation](#skills-installation) - + [Install Skills from the Plasmoid](#install-skills-from-the-plasmoid) - + [Install Skills with HTML Data](#install-skills-with-html-data) - + [To Install Plasma Desktop Skills (Manually)](#to-install-plasma-desktop-skills--manually-) -* [Skills Dependency Requirements](#skills-dependency-requirements) -* [Skills Dependencies for Other Distributions](#skills-dependencies-for-other-distributions) - -## Installation Requirements - -1. This plasmoid requires [Mycroft Core](https://github.com/MycroftAI/mycroft-core) installed using the GIT Method. - -```bash -cd /home/$USER/ -git clone https://github.com/MycroftAI/mycroft-core -./dev_setup.sh -``` - -2. Download or clone this repository. -3. Unzip to a folder. - -### KDE Neon/Kubuntu - -```bash -sudo apt-get install libkf5notifications-data libkf5notifications-dev qml-module-qtquick2 qml-module-qtquick-controls2 qml-module-qtquick-controls qml-module-qtwebsockets qml-module-qt-websockets qtdeclarative5-qtquick2-plugin qtdeclarative5-models-plugin cmake cmake-extras cmake-data qml-module-qtquick-layouts libkf5plasma-dev extra-cmake-modules qtdeclarative5-dev build-essential g++ gettext libqt5webkit5 libqt5webkit5-dev libkf5i18n-data libkf5i18n-dev libkf5i18n5 qml-module-qtgraphicaleffects libqt5dbus5 libkf5dbusaddons-dev libdbus-1-dev libdbus-glib-1-dev -y -``` - -### Fedora - -```bash -sudo dnf install kf5-knotifications-devel qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtquick1-devel qt5-qtquickcontrols qt5-qtquickcontrols2 qt5-qtwebsockets cmake extra-cmake-modules kf5-plasma-devel kf5-i18n-devel qt5-qtwebkit qt5-qtwebkit-devel -``` - -## Installation Instructions - -1. Go to the downloaded plasmoid folder and run the following commands: - - ```bash - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON - make - sudo make install - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/startservice.sh - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/stopservice.sh - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/pkgstartservice.sh - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/pkgstopservice.sh - ``` - -2. Log out and log in or restart the Plasma shell. - -Note: This plasmoid's default find location for `mycroft-core` services is `/home/$USER/mycroft-core/`. This can be changed as per your installation path of `mycroft-core` in the settings tab. - -## Upgrade from Previous Plasmoid Instructions - -1. Install additional dependencies: - - - KDE Neon/Kubuntu - - ```bash - sudo apt-get install libqt5webkit5 libqt5webkit5-dev libkf5i18n-data libkf5i18n-dev libkf5i18n5 libqt5dbus5 libkf5dbusaddons-dev qml-module-qtgraphicaleffects - ``` - - - Fedora - - ```bash - sudo dnf install kf5-i18n-devel qt5-qtwebkit qt5-qtwebkit-devel - Locate your plasma-mycroft folder - cd plasma-mycroft - git pull origin master - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON - make - sudo make install - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/startservice.sh - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/stopservice.sh - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/pkgstartservice.sh - sudo chmod +x /usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/pkgstopservice.sh - ``` - -2. Log out and log in or restart the Plasma shell. - - -## Skills Installation - -### Install Skills from the Plasmoid - -| Skill | Name | Instruction | -|---|---|---| -| Krunner Skill | `Krunner-Search-Skill` | Install from plasmoid (follow dependency installation below) | -| Activities Skill | `Plasma-Activities-Skill` | Install from plasmoid (follow dependency installation below) | -| User Control Skill | `Plasma-User-Control-Skill` | Install from plasmoid (follow dependency installation below) | -| Wallpaper Change Skill | `Unsplash-Wallpaper-Plasma-Skill` | Install from plasmoid (follow dependency installation below) | -| Image Recognition Skill | | Follow instructions at [AIIX/clarifai-image-recognition-skill](https://github.com/AIIX/clarifai-image-recognition-skill) | - - -### Install Skills with HTML Data - -- `skill-weather`: - Replace `/opt/mycroft/skills/skill-weather` with `https://github.com/AIIX/skill-weather` by running: - - ```bash - git clone https://github.com/AIIX/skill-weather - cp -R skill-weather/* /opt/mycroft/skills/skill-weather/ - ``` - -- `skill-stocks`: - Replace `/opt/mycroft/skills/skill-stock` with `https://github.com/AIIX/skill-stock` by running: - - ```bash - git clone https://github.com/AIIX/skill-stock - cp -R skill-stock/* /opt/mycroft/skills/skill-stock/ - ``` - -- `skill-wiki`: - Replace `/opt/mycroft/skills/skill-wiki` with `https://github.com/AIIX/skill-wiki` by running: - - ```bash - git clone https://github.com/AIIX/skill-wiki - cp -R skill-wiki/* /opt/mycroft/skills/skill-wiki/ - ``` - -### To Install Plasma Desktop Skills (Manually) - -If you do this, the step [Skills Dependency Requirements](#skills-dependency-requirements) is very important. - -```bash -git clone https://github.com/AIIX/krunner-search-skill -cp -R krunner-search-skill/* /opt/mycroft/skills/krunner-search-skill/ -git clone https://github.com/AIIX/plasma-activities-skill -cp -R plasma-activities-skill/* /opt/mycroft/skills/plasma-activities-skill/ -git clone https://github.com/AIIX/plasma-user-control-skill -cp -R plasma-user-control-skill/* /opt/mycroft/skills/plasma-user-control-skill/ -git clone https://github.com/AIIX/unsplash-wallpaper-plasma-skill -cp -R unsplash-wallpaper-plasma-skill/* /opt/mycroft/skills/unsplash-wallpaper-plasma-skill/ -git clone https://github.com/AIIX/clarifai-image-recognition-skill -cp -R clarifai-image-recognition-skill/* /opt/mycroft/skills/clarifai-image-recognition-skill/ -``` - -## Skills Dependency Requirements - -For Skills (KDE Neon), run: - -```bash -sudo apt install python-dbus python-pyqt5 pyqt5-dev python-sip python-sip-dev -cp -R /usr/lib/python2.7/dist-packages/dbus* /home/$USER/.virtualenvs/mycroft/lib/python2.7/site-packages/ -cp /usr/lib/python2.7/dist-packages/_dbus* /home/$USER/.virtualenvs/mycroft/lib/python2.7/site-packages/ -cp -R /usr/lib/python2.7/dist-packages/PyQt5* /home/$USER/.virtualenvs/mycroft/lib/python2.7/site-packages/ -cp /usr/lib/python2.7/dist-packages/sip* /home/$USER/.virtualenvs/mycroft/lib/python2.7/site-packages/ -``` - -## Skills Dependencies for Other Distributions - -Python Dbus, PyQT5 and SIP packages are required. -Copy the Python Dbus, Python QT folder and SIP libs from your system Python installation to `/home/$USER/.virtualenvs/mycroft/lib/python2.7/site-packages/`. +# Mycroft Plasmoid v2.x + +1. Installation Requirements + + + This plasmoid requires Mycroft Core Installed from http://github.com/MycroftAi/Mycroft-Core using the GIT Method: + + cd /home/$USER/ + + git clone https://github.com/MycroftAI/mycroft-core + + Run: ./dev_setup.sh + + This plasmoid requires Mycroft-GUI Installed from http://github.com/MycroftAi/Mycroft-GUI. + + This plasmoid requires Lottie-QML Installed from https://github.com/kbroulik/lottie-qml. + + + Download / Clone Mycroft Plasmoid from this REPO. + + Unzip to folder if Downloaded + + + For KDE NEON / Kubuntu: sudo apt-get install libkf5notifications-data libkf5notifications-dev qml-module-qtquick2 qml-module-qtquick-controls2 qml-module-qtquick-controls qml-module-qtwebsockets qml-module-qt-websockets qtdeclarative5-qtquick2-plugin qtdeclarative5-models-plugin cmake cmake-extras cmake-data qml-module-qtquick-layouts libkf5plasma-dev extra-cmake-modules qtdeclarative5-dev build-essential g++ gettext libqt5webkit5 libqt5webkit5-dev libkf5i18n-data libkf5i18n-dev libkf5i18n5 qml-module-qtgraphicaleffects libqt5dbus5 libkf5dbusaddons-dev libdbus-1-dev libdbus-glib-1-dev kio-dev pkg-config pkg-kde-tools qtbase5-dev libkf5kio-dev libqt5websockets5-dev -y + +2. Installation Instructions [Go To Downloaded Plasmoid Folder and run the following commands] + + + mkdir build + + cd build + + cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DKDE_INSTALL_LIBDIR=lib -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DBUILD_GUI_DEPS=ON("-DBUILD_GUI_DEPS" Only required if Mycroft-GUI is not installed) + + make + + sudo make install + + Logout / Login or Restart Plasma Shell diff --git a/mycroft/mycroft.conf b/mycroft/mycroft.conf index 7dbd3f6..1bf0ae8 100644 --- a/mycroft/mycroft.conf +++ b/mycroft/mycroft.conf @@ -1,7 +1,7 @@ { "enclosure": { - "platform": "kde", + "platform": "mycroft_mark_2", "update": true, "test": false } } diff --git a/plasmoid/contents/code/fallback.css b/plasmoid/contents/code/fallback.css deleted file mode 100644 index d698f57..0000000 --- a/plasmoid/contents/code/fallback.css +++ /dev/null @@ -1,7 +0,0 @@ -img { - object-fit: fill; - width: 100% !important; - height: 100% !important; - max-width: 100% !important; - max-height: 100% !important; -} diff --git a/plasmoid/contents/code/maps.css b/plasmoid/contents/code/maps.css deleted file mode 100644 index be0ef46..0000000 --- a/plasmoid/contents/code/maps.css +++ /dev/null @@ -1,5 +0,0 @@ -img { - width: 100% !important; - height: 100% !important; - max-width:100% !important; -} diff --git a/plasmoid/contents/code/msm.sh b/plasmoid/contents/code/msm.sh deleted file mode 100755 index cb60c16..0000000 --- a/plasmoid/contents/code/msm.sh +++ /dev/null @@ -1,744 +0,0 @@ -#!/bin/bash - -# Copyright 2017 Mycroft AI Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -RED='\033[0;31m' -NOCOLOR='\033[0m' -GREEN='\033[0;32m' - - -script=${0} -script=${script##*/} - -function help() { - echo "${script}: Mycroft Skill Manager" - echo "usage: ${script} [option] [repo | name]" - echo - echo "Options:" - echo " default installs the default skills, updates all others" - echo " install installs from the specified github repo" - echo " install [name...] installs the mycroft-skill matching " - echo " remove [name...] removes the specified github repo" - echo " list list all mycroft-skills" - echo " update update all installed skills" - echo " search search mycroft-skills for match for " - echo " info shows information about the skill matching " - echo " info shows information about the skill in the specified repo" - echo - echo "Params:" - echo " full URL to a Github repo" - echo " one or more substrings to match against submodule names" - echo " in the https://github.com/MycroftAI/mycroft-skills repo" - echo - echo "Examples:" - echo " ${script} search twitter" - echo " ${script} search date-time-skill" - echo " ${script} install \"daily meditation\"" - echo " ${script} remove \"daily meditation\"" - echo " ${script} install https://github.com/penrods/Wink.git" - - exit 1 -} - -# Determine the platform -mycroft_platform="null" -if [[ -r /etc/mycroft/mycroft.conf ]] ; then - mycroft_platform=$( jq -r '.enclosure.platform' /etc/mycroft/mycroft.conf ) -else - if [[ "$(hostname)" == "picroft" ]] ; then - mycroft_platform="picroft" - elif [[ "$(hostname)" =~ "mark_1" ]] ; then - mycroft_platform="mycroft_mark_1" - fi -fi - -# Get the location of the Skill folder -mycroft_skill_folder="null" -if [[ -r /etc/mycroft/mycroft.conf ]] ; then - mycroft_skill_folder=$( jq -r '.enclosure.skill_folder' /etc/mycroft/mycroft.conf ) -fi -if [[ ${mycroft_skill_folder} == "null" ]] ; then - mycroft_skill_folder="/opt/mycroft/skills" -fi - -if [[ ! -d "${mycroft_skill_folder}" ]] ; then - echo "ERROR: Unable to find/access ${mycroft_skill_folder}!" - exit 101 -fi - -# Determine if on picroft/mk1? -picroft_mk1="false" -vwrap="true" -if [[ "${mycroft_platform}" == "picroft" ]] || [[ "${mycroft_platform}" == "mycroft_mark_1" ]] ; then - picroft_mk1="true" -else - if [[ -r /etc/bash_completion.d/virtualenvwrapper ]]; then - source /etc/bash_completion.d/virtualenvwrapper - elif [[ -r /usr/bin/virtualenvwrapper.sh ]]; then - source /usr/bin/virtualenvwrapper.sh - else - if locate virtualenvwrapper ; then - if ! source $(locate virtualenvwrapper) ; then - echo "WARNING: Unable to locate virtualenvwrapper.sh, not able to install skills!" - vwrap="false" - fi - fi - fi -fi - -# Cache to only retrieve list once per MSM invocation -LIST_CACHE='' - -function get_skill_list() { - if ! [[ ${LIST_CACHE} ]] ; then - echo "1" >> ~/count.txt - if hash curl ; then - # retrieve using curl - LIST_CACHE=$( curl -s "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/master/.gitmodules" ) - if ! [[ "${LIST_CACHE}" ]] ; then - return 111 - fi - else - # retrieve using wget - LIST_CACHE=$( wget -qO- "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/master/.gitmodules" ) - if ! [[ "${LIST_CACHE}" ]] ; then - return 112 - fi - fi - fi -} - -# Communicate with mycroft-core to inform it of install status -install_started="false" -update_started="false" -remove_started="false" -function send_start_install () { - if [[ "${install_started}" == "false" ]] ; then - python -m mycroft.messagebus.send msm.installing - install_started="true" - fi -} -function send_start_update () { - if [[ "${update_started}" == "false" ]] ; then - python -m mycroft.messagebus.send msm.updating - update_started="true" - fi -} -function send_start_remove () { - if [[ "${remove_started}" == "false" ]] ; then - python -m mycroft.messagebus.send msm.removing - remove_started="true" - fi -} -function send_install_success () { - python -m mycroft.messagebus.send msm.install.succeeded "{\"skill\": \"${1}\" }" -} -function send_install_fail () { - python -m mycroft.messagebus.send msm.install.failed "{\"skill\": \"${1}\", \"error\" : ${2} }" -} -function send_remove_success () { - python -m mycroft.messagebus.send msm.remove.succeeded "{\"skill\": \"${1}\" }" -} -function send_remove_fail () { - python -m mycroft.messagebus.send msm.remove.failed "{\"skill\": \"${1}\", \"error\" : ${2} }" -} -function send_end_install () { - if [[ "${install_started}" == "true" ]] ; then - python -m mycroft.messagebus.send msm.installed - fi -} -function send_end_update () { - if [[ "${update_started}" == "true" ]] ; then - python -m mycroft.messagebus.send msm.updated - fi -} -function send_end_remove () { - if [[ "${remove_started}" == "true" ]] ; then - python -m mycroft.messagebus.send msm.removed - fi -} - - -function remove() { - str=$* - echo "Searching for '$str'..." - - cd "${mycroft_skill_folder}" - - # NOTE: Using the same process that was used in the install. - # So you can install and remove with partial names. - - # Search for the given word(s) as the submodule - skills=$(echo "${LIST_CACHE}" | grep -n 'submodule' | sed 's/[[:space:]]//g' | sed 's/\[submodule"//g' | sed 's/"\]//g') - - # Test for exact name match - exact_match=$(echo "$skills" | grep -i ".*:${str}$") - if [[ ! -z "${exact_match}" ]]; then - # Found a perfect match! - skill=${exact_match} - else - # Test for match of all supplied words/subwords - skill=$(echo "$skills") # start with all skills - for s in ${str} - do - # whittle list down with each word in the search string - skill=$(echo "$skill" | grep -i ".*:.*${s}.*") - done - fi - - git_line=$(echo "$skill" | sed 's/\:.*//') - if [[ "${skill}" == *$'\n'* ]]; then - # The str matches multiple skill repos, don't install - # due to ambiguity. - # - echo "Multiple matches for '${str}', be more specific." - echo "------------------------------------------------------------" - echo "$skill" | sed 's/.*://g' | sort - echo "------------------------------------------------------------" - return 251 - else - if [[ -z "${git_line}" ]]; then - echo "'${str}' was not found in the mycroft-skills repo" - return 252 - fi - repo_line=$(($git_line + 2)) - repo=$(echo "${LIST_CACHE}" | sed -n $repo_line'{p;q;}' | sed 's/[[:space:]]//g' | sed 's/[[:space:]]//g' | sed 's/url=//g') - fi - - git_name=$(echo "${repo}" | sed 's/.*\///') - name=$(echo "$git_name" | sed 's/.git//') - if [[ -d "${mycroft_skill_folder}/${name}" ]] ; then - # TODO: Build mechanism for removing all requirements.txt - # that are no longer used (e.g. via a master Mycroft list). - - # Delete the skill folder - echo -n "Removing '${name}'..." - send_start_remove - rm -rf "${name}" - if [[ -d "${mycroft_skill_folder}/${name}" ]] ; then - # Failed to remove the skill directory - send_remove_fail "${name}" 249 - return 249 - else - echo "done" - echo "Removed: ${name}" - send_remove_success - return 0 - fi - else - echo "Skill '${name}' has not been installed, nothing to remove." - return 253 - fi -} - -function install() { - # This could be either a string or a URL - str=$* - if [[ "${INSTALLING_DEFAULTS}" == "false" ]] ; then - echo "Searching for for '$str'..." - else - echo -n "Searching for for '$str'..." - fi - - # TODO: Allow skipping virtualwrapper with an option? - if [[ "$vwrap" = "false" ]] ; then - echo "ERROR: Missing virtualwrapper, cowardly refusing to install skills" - return 5 - fi - - cd "${mycroft_skill_folder}" - - if [[ "${str}" == "git@"* || "${str}" == "https://"* || "${str}" == "http://"* ]]; then - # Repo was given - repo="${str}" - else - # Search for the given word(s) as the submodule - skills=$(echo "${LIST_CACHE}" | grep -n 'submodule' | sed 's/[[:space:]]//g' | sed 's/\[submodule"//g' | sed 's/"\]//g') - - # Test for exact name match - exact_match=$(echo "$skills" | grep -i ".*:${str}$") - if [[ ! -z "${exact_match}" ]]; then - # Found a perfect match! - skill=${exact_match} - else - # Test for match of all supplied words/subwords - skill=$(echo "$skills") # start with all skills - for s in ${str} - do - # whittle list down with each word in the search string - skill=$(echo "$skill" | grep -i ".*:.*${s}.*") - done - fi - - git_line=$(echo "$skill" | sed 's/\:.*//') - - if [[ "${skill}" == *$'\n'* ]]; then - # The str matches multiple skill repos, don't install - # due to ambiguity. - echo "Multiple matches for '${str}', be more specfic." - echo "------------------------------------------------------------" - echo "$skill" | sed 's/.*://g' | sort - echo "------------------------------------------------------------" - return 201 - else - if [[ -z "${git_line}" ]]; then - echo "'${str}' skill was not found" - return 202 - fi - repo_line=$(($git_line + 2)) - repo=$(echo "${LIST_CACHE}" | sed -n $repo_line'{p;q;}' | sed 's/[[:space:]]//g' | sed 's/[[:space:]]//g' | sed 's/url=//g') - fi - fi - - git_name=$(echo "${repo}" | sed 's/.*\///') - name=$(echo "$git_name" | sed 's/.git//') - if [[ -d "${mycroft_skill_folder}/${name}" ]] ; then - # Don't show message when verify default skills - if [[ "${INSTALLING_DEFAULTS}" == "false" ]] ; then - echo "Skill already installed. Perhaps you meant to use update?" - else - echo "exists" - fi - return 20 - else - echo "installing" - fi - - echo "Installing from: ${repo}" - send_start_install - git clone "${repo}" >> /dev/null - if ! cd "${name}" ; then - echo "ERROR: Unable to access directory ${name}!" - send_install_fail "${name}" 102 - return 102 - fi - if [[ "${picroft_mk1}" == "true" ]] ; then - # Verify skill folder is accessible to the 'mycroft' user - owner=$( stat -c %U "${mycroft_skill_folder}/${name}" ) - group=$( stat -c %G "${mycroft_skill_folder}/${name}" ) - if [[ "${group}" != "mycroft" ]] || [[ "${owner}" != "mycroft" ]] ; then - if ! sudo chown -R mycroft:mycroft "${mycroft_skill_folder}/${name}" ; then - echo "ERROR: Unable to chown install directory ${name}!" - send_install_fail "${name}" 123 - return 123 - fi - fi - fi - - # If the skill has a requirements.txt, pip install them - run_pip "${name}" - rc=$? - if [[ ${rc} -gt 0 ]] ; then - return ${rc} - fi - - # If the skill has a requirements.sh, then run that using bash - if [[ -f "requirements.sh" ]]; then - echo " Setting up native environment..." - if ! bash requirements.sh; then - echo "Running requirements.sh failed!" - send_install_fail "${name}" 122 - return 122 - fi - fi - - echo "Installed: ${name}" - send_install_success "${name}" - return 0 -} - -function run_pip() { - # NOTE: Must be in the skill directory already... - name=$* - if [[ -f "requirements.txt" ]]; then - echo " Installing requirements..." - if [[ "${picroft_mk1}" == "false" ]]; then - if [[ "${VIRTUAL_ENV}" =~ .mycroft$ ]] ; then - if ! pip install -r requirements.txt ; then - echo "ERROR: Unable to install requirements for skill '${name}'" - send_install_fail "${name}" 121 - return 121 - fi - else - if workon mycroft ; then - if ! pip install -r requirements.txt ; then - echo "ERROR: Unable to install requirements for skill '${name}'" - deactivate mycroft - send_install_fail "${name}" 121 - return 121 - fi - else - echo "ERROR: Unable to activate 'mycroft' virtualenv, requirements not installed." - send_install_fail "${name}" 120 - return 120 - fi - fi - else - if ! sudo pip install -r requirements.txt ; then - echo "ERROR: Unable to install requirements for '${name}', it may not work" - send_install_fail "${name}" 121 - return 121 - fi - fi - fi - - return 0 # no problem encountered -} - -function install_from_url_list() { - exit_code=0 - skill_list=$( curl -s "${*}" ) - if [[ $? -gt 0 || $skill_list =~ ^404 ]] ; then - # This is fine, just no list found - return 0 - fi - - # Tell 'for' to only break on newlines, not spaces. The # comment lines - # inside the list can contain spaces in them. - IFS=$'\n' - for name in ${skill_list} - do - if [[ ! $name =~ ^# ]] ; then # ignore comment lines - install $name - rc=$? - if [[ ${rc} -gt 0 ]] ; then - if [[ ${rc} -gt ${exit_code} ]] ; then - # keep the highest exit code - exit_code=${rc} - fi - fi - fi - done - - return ${exit_code} -} - -function search() { - # Find the search string among the skills in the Skill repo - search_list=$(echo "${LIST_CACHE}" | grep 'submodule "' | sed 's/\[submodule "//g'| sed 's/"\]//g') - search_string="$*" - shift - while read -r matches; do - if [[ "${search_string}" == "${matches}" ]] ; then - echo "Exact match found: ${matches}" - else - echo "Possible match: ${matches}" - fi - done < <(grep -i "${search_string}" <<< "${search_list}") -} - -function update() { - echo "Updating installed skills..." - cd "${mycroft_skill_folder}" - - # Loop through all of the current Skill folders - for d in $(find "${mycroft_skill_folder}" -mindepth 1 -maxdepth 1 -type d |grep -v '.git'$ ); do - # Go in to all folders that are git checkouts - if git -C "$d" rev-parse --git-dir > /dev/null 2>&1; then - cd "${d}" - UPSTREAM=${1:-'@{u}'} - LOCAL=$(git rev-parse @) - REMOTE=$(git rev-parse "$UPSTREAM") - BASE=$(git merge-base @ "$UPSTREAM") - - # Force ignoring the generated .pyc files - if ! grep -q '.pyc'$ .git/info/exclude; then - echo "*.pyc" >> .git/info/exclude - fi - - BRANCH="$(git symbolic-ref HEAD 2>/dev/null)" - BRANCH="${BRANCH##refs/heads/}" - - # Only update checkouts that have not been modified at all - if [[ (-z $(git status --porcelain --untracked-files=no)) && # No Modified files - !($LOCAL != $REMOTE && $REMOTE = $BASE) && # No new commits - "$BRANCH" = "master" ]] # On master branch - then - echo "Updating ${d}..." - echo -n " " - send_start_update - git fetch - git reset --hard origin/master - rm -f *.pyc - else - echo "Ignoring ${d}, skill has been modified." - fi - - # TODO: Remove this for 18.02 - # HACK: Re-run PIP, because Mycroft-core removed some of its required, - # which broke previously-installed packages on a Picroft/Mark1 - # that was satisfied by packages that previously came along with - # mycroft-core. - if [ ! -f /tmp/mycroft_has_re-PIPed ] ; then - run_pip "${d}" - echo "Re-running PIP on requirements.txt" - fi - fi - done - - # TODO: Remove this for 18.02 - # HACK: Only do the re-PIP once per boot - if [ ! -f /tmp/mycroft_has_re-PIPed ] ; then - echo "1" > /tmp/mycroft_has_re-PIPed - fi -} - -function print_info() { - str=$* - if [[ "${str}" == "git@"* || "${str}" == "https://"* || "${str}" == "http://"* ]]; then - # Repo was given - repo="${str}" - else - # Search for the given word(s) as the submodule - skills=$(echo "${LIST_CACHE}" | grep -n 'submodule' | sed 's/[[:space:]]//g' | sed 's/\[submodule"//g' | sed 's/"\]//g') - - # Test for exact name match - exact_match=$(echo "$skills" | grep -i ".*:${str}$") - if [[ ! -z "${exact_match}" ]]; then - # Found a perfect match! - skill=${exact_match} - else - # Test for match of all supplied words/subwords - skill=$(echo "$skills") # start with all skills - for s in ${str} - do - # whittle list down with each word in the search string - skill=$(echo "$skill" | grep -i ".*:.*${s}.*") - done - fi - - git_line=$(echo "$skill" | sed 's/\:.*//') - - if [[ "${skill}" == *$'\n'* ]]; then - # The str matches multiple skill repos, don't install - # due to ambiguity. - echo "Multiple matches for '${str}', be more specfic." - echo "------------------------------------------------------------" - echo "$skill" | sed 's/.*://g' | sort - echo "------------------------------------------------------------" - return 201 - else - if [[ -z "${git_line}" ]]; then - echo "'${str}' skill was not found" - return 202 - fi - repo_line=$(($git_line + 2)) - repo=$(echo "${LIST_CACHE}" | sed -n $repo_line'{p;q;}' | sed 's/[[:space:]]//g' | sed 's/[[:space:]]//g' | sed 's/url=//g') - fi - fi - - local baseUrl=$(echo "${repo}" | sed -e 's/github.com/raw.githubusercontent.com/g' | sed -e 's/\.git$//g')/master - ### debugging output: - # echo git line is: "$git_line" - # echo repo line is: "$repo_line" - # echo repo is: "$repo" - # echo base url is "$baseUrl" - local readmeUrl="$baseUrl/readme.md" - local stat="$(curl -I -s $readmeUrl | sed -n '1p')" - local readme="" - if [[ $stat == *"200"* ]] ; then - readme="$(curl -s $readmeUrl)" - else - readmeUrl="$baseUrl/Readme.md" - stat=$(curl -I -s ${readmeUrl} | sed -n '1p') - if [[ $stat == *"200"* ]] ; then - readme="$(curl -s $readmeUrl)" - else - readmeUrl="$baseUrl/README.md" - stat=$(curl -I -s ${readmeUrl} | sed -n '1p') - if [[ $stat == *"200"* ]] ; then - readme="$(curl -s $readmeUrl)" - else - echo "Didn't find any information to display." - exit 0 - fi - fi - fi - - echo "$readme" - exit 0 -} - -OPT=$1 -shift - - -case ${OPT} in - "install") - if [[ $# -gt 0 ]] ; then - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - - for str in "$@" - do - install $str - rc=$? - - if [[ ${rc} -gt 0 ]] ; then - if [[ ${rc} -gt ${exit_code} ]] ; then - exit_code=${rc} - fi - fi - done - send_end_install - else - # install requires a parameter, show help - help - exit_code=1 - fi - ;; - "remove") - if [[ $# -gt 0 ]] ; then - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - - for str in "$@" - do - remove $str - rc=$? - - if [[ ${rc} -gt 0 ]] ; then - if [[ ${rc} -gt ${exit_code} ]] ; then - exit_code=${rc} - fi - fi - done - send_end_remove - else - # remove requires a parameter, show help - help - exit_code=1 - fi - ;; - "list") - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - - submodules=$(echo "${LIST_CACHE}" | grep 'submodule "' | sed 's/\[submodule "//g'| sed 's/"\]//g' | sort) - while read -r submod - do - if [[ -d "$mycroft_skill_folder/$submod" ]] ; then - printf "$submod ${RED}[${GREEN}installed${RED}]${NOCOLOR}\n\r" - else - printf "$submod\n\r" - fi - done <<< "$submodules" - exit_code=$? - ;; - "update") - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - - update - send_end_update - exit_code=$? - ;; - "default") - echo "=== Checking for default skills" - INSTALLING_DEFAULTS="true" - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - - # These skills are automatically installed on all mycroft-core - # installations. - install_from_url_list "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/master/DEFAULT-SKILLS" - exit_code=$? - - # Grab any platform-specific skills - if [[ ${mycroft_platform} != 'null' ]] ; then - if [[ ${exit_code} -eq 0 || ${exit_code} -eq 20 ]] ; then - install_from_url_list "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/master/DEFAULT-SKILLS.${mycroft_platform}" - exit_code=$? - fi - fi - - # exit code 20 == skills already installed, which is OK here - if [[ ${exit_code} -eq 0 || ${exit_code} -eq 20 ]] ; then - update - send_end_update - exit_code=$? - fi - ;; - "search") - if [[ $# -gt 0 ]] ; then - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - - res="" - for str in "$@" - do - out=$( search ${str} ) - res=$( printf "${out}\n${res}" ) - done - echo "$res" | sort | uniq - exit_code=$? - else - # search requires a parameter, show help - help - exit_code=1 - fi - ;; - "info") - get_skill_list - exit_code=$? - if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" - exit ${exit_code} - fi - print_info $1 - rc=$? - if [[ ${rc} -gt 0 ]] ; then - if [[ ${rc} -gt ${exit_code} ]] ; then - echo "${script}: error ${exit_code}" - exit_code=${rc} - fi - fi - exit_code=0 - ;; - *) - help - exit_code=0 - ;; -esac - - -if [[ ${exit_code} -gt 0 ]] ; then - echo "${script}: error ${exit_code}" -fi -exit ${exit_code} diff --git a/plasmoid/contents/code/pkgstartservice.sh b/plasmoid/contents/code/pkgstartservice.sh deleted file mode 100755 index 0c73f98..0000000 --- a/plasmoid/contents/code/pkgstartservice.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -systemctl --user daemon-reload -systemctl --user start mycroft.target -paplay /usr/share/sounds/freedesktop/stereo/dialog-error.oga diff --git a/plasmoid/contents/code/pkgstopservice.sh b/plasmoid/contents/code/pkgstopservice.sh deleted file mode 100755 index bd6a34b..0000000 --- a/plasmoid/contents/code/pkgstopservice.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -systemctl --user stop mycroft.target -paplay /usr/share/sounds/freedesktop/stereo/dialog-error.oga diff --git a/plasmoid/contents/code/startservice.sh b/plasmoid/contents/code/startservice.sh deleted file mode 100755 index 72ba1b0..0000000 --- a/plasmoid/contents/code/startservice.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cd /home/$USER/mycroft-core/ -./start-mycroft.sh all -paplay /usr/share/sounds/freedesktop/stereo/dialog-error.oga diff --git a/plasmoid/contents/code/stopservice.sh b/plasmoid/contents/code/stopservice.sh deleted file mode 100755 index 1e30dce..0000000 --- a/plasmoid/contents/code/stopservice.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cd /home/$USER/mycroft-core/ -./stop-mycroft.sh -paplay /usr/share/sounds/freedesktop/stereo/dialog-error.oga diff --git a/plasmoid/contents/ui/BookType.qml b/plasmoid/contents/config/config.qml similarity index 61% rename from plasmoid/contents/ui/BookType.qml rename to plasmoid/contents/config/config.qml index b07dd9e..9d843c9 100644 --- a/plasmoid/contents/ui/BookType.qml +++ b/plasmoid/contents/config/config.qml @@ -1,44 +1,29 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.configuration 2.0 -Rectangle { - id: booktypebg - height: cbheight / 1.8 - width: cbwidth - color: theme.backgroundColor - -ListView { - id: bookmodelview - anchors.fill: parent - model: bookLmodel - focus: false - interactive: true - clip: true; - delegate: BookDelegate{} +ConfigModel { + ConfigCategory { + name: i18n('General') + icon: 'preferences-system-windows' + source: 'config/configGeneral.qml' } } - diff --git a/plasmoid/contents/config/main.xml b/plasmoid/contents/config/main.xml new file mode 100644 index 0000000..c8704f6 --- /dev/null +++ b/plasmoid/contents/config/main.xml @@ -0,0 +1,28 @@ + + + + + + + + + + true + + + false + + + true + + + + + + false + + + diff --git a/plasmoid/contents/images/Logo_2.gif b/plasmoid/contents/images/Logo_2.gif deleted file mode 100644 index c9bd8a5..0000000 Binary files a/plasmoid/contents/images/Logo_2.gif and /dev/null differ diff --git a/plasmoid/contents/images/alarm.png b/plasmoid/contents/images/alarm.png deleted file mode 100644 index cb321f1..0000000 Binary files a/plasmoid/contents/images/alarm.png and /dev/null differ diff --git a/plasmoid/contents/images/appicon.png b/plasmoid/contents/images/appicon.png deleted file mode 100644 index ad6c5c5..0000000 Binary files a/plasmoid/contents/images/appicon.png and /dev/null differ diff --git a/plasmoid/contents/images/appicon.svg b/plasmoid/contents/images/appicon.svg deleted file mode 100644 index c8f1c98..0000000 --- a/plasmoid/contents/images/appicon.svg +++ /dev/null @@ -1,797 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/plasmoid/contents/images/background.png b/plasmoid/contents/images/background.png deleted file mode 100644 index 00a28b2..0000000 Binary files a/plasmoid/contents/images/background.png and /dev/null differ diff --git a/plasmoid/contents/images/bluebg.png b/plasmoid/contents/images/bluebg.png deleted file mode 100644 index 34a16fc..0000000 Binary files a/plasmoid/contents/images/bluebg.png and /dev/null differ diff --git a/plasmoid/contents/images/bluesky.png b/plasmoid/contents/images/bluesky.png deleted file mode 100644 index 9477bd5..0000000 Binary files a/plasmoid/contents/images/bluesky.png and /dev/null differ diff --git a/plasmoid/contents/images/clearsky.gif b/plasmoid/contents/images/clearsky.gif deleted file mode 100644 index 98821b9..0000000 Binary files a/plasmoid/contents/images/clearsky.gif and /dev/null differ diff --git a/plasmoid/contents/images/climatesc.jpg b/plasmoid/contents/images/climatesc.jpg deleted file mode 100644 index 004210d..0000000 Binary files a/plasmoid/contents/images/climatesc.jpg and /dev/null differ diff --git a/plasmoid/contents/images/dateandtime.png b/plasmoid/contents/images/dateandtime.png deleted file mode 100644 index 8ee9219..0000000 Binary files a/plasmoid/contents/images/dateandtime.png and /dev/null differ diff --git a/plasmoid/contents/images/desktop.png b/plasmoid/contents/images/desktop.png deleted file mode 100644 index 912d77f..0000000 Binary files a/plasmoid/contents/images/desktop.png and /dev/null differ diff --git a/plasmoid/contents/images/destination.png b/plasmoid/contents/images/destination.png deleted file mode 100644 index 253e6cc..0000000 Binary files a/plasmoid/contents/images/destination.png and /dev/null differ diff --git a/plasmoid/contents/images/funnyface.png b/plasmoid/contents/images/funnyface.png deleted file mode 100644 index 77810eb..0000000 Binary files a/plasmoid/contents/images/funnyface.png and /dev/null differ diff --git a/plasmoid/contents/images/haze.gif b/plasmoid/contents/images/haze.gif deleted file mode 100644 index 13e16b6..0000000 Binary files a/plasmoid/contents/images/haze.gif and /dev/null differ diff --git a/plasmoid/contents/images/joke.png b/plasmoid/contents/images/joke.png deleted file mode 100644 index 9ad5222..0000000 Binary files a/plasmoid/contents/images/joke.png and /dev/null differ diff --git a/plasmoid/contents/images/logo.png b/plasmoid/contents/images/logo.png index e8021ea..032414e 100644 Binary files a/plasmoid/contents/images/logo.png and b/plasmoid/contents/images/logo.png differ diff --git a/plasmoid/contents/images/midanim.png b/plasmoid/contents/images/midanim.png deleted file mode 100644 index c38a917..0000000 Binary files a/plasmoid/contents/images/midanim.png and /dev/null differ diff --git a/plasmoid/contents/images/mleftanim.png b/plasmoid/contents/images/mleftanim.png deleted file mode 100644 index a9f3085..0000000 Binary files a/plasmoid/contents/images/mleftanim.png and /dev/null differ diff --git a/plasmoid/contents/images/mleftmidanim.png b/plasmoid/contents/images/mleftmidanim.png deleted file mode 100644 index a234734..0000000 Binary files a/plasmoid/contents/images/mleftmidanim.png and /dev/null differ diff --git a/plasmoid/contents/images/mleftsmallanim.png b/plasmoid/contents/images/mleftsmallanim.png deleted file mode 100644 index 4fb7e79..0000000 Binary files a/plasmoid/contents/images/mleftsmallanim.png and /dev/null differ diff --git a/plasmoid/contents/images/mmidanim.png b/plasmoid/contents/images/mmidanim.png deleted file mode 100644 index cf7a428..0000000 Binary files a/plasmoid/contents/images/mmidanim.png and /dev/null differ diff --git a/plasmoid/contents/images/mrightsmallanim.png b/plasmoid/contents/images/mrightsmallanim.png deleted file mode 100644 index c22926f..0000000 Binary files a/plasmoid/contents/images/mrightsmallanim.png and /dev/null differ diff --git a/plasmoid/contents/images/mycroft-logo.svg b/plasmoid/contents/images/mycroft-logo.svg new file mode 100755 index 0000000..1d5ea13 --- /dev/null +++ b/plasmoid/contents/images/mycroft-logo.svg @@ -0,0 +1,110 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/plasmoid/contents/images/newsicon.png b/plasmoid/contents/images/newsicon.png deleted file mode 100644 index 3d21595..0000000 Binary files a/plasmoid/contents/images/newsicon.png and /dev/null differ diff --git a/plasmoid/contents/images/pairs.svgz b/plasmoid/contents/images/pairs.svgz deleted file mode 100644 index 4d1be5d..0000000 Binary files a/plasmoid/contents/images/pairs.svgz and /dev/null differ diff --git a/plasmoid/contents/images/productivity.png b/plasmoid/contents/images/productivity.png deleted file mode 100644 index 48fc24f..0000000 Binary files a/plasmoid/contents/images/productivity.png and /dev/null differ diff --git a/plasmoid/contents/images/qabackground.png b/plasmoid/contents/images/qabackground.png deleted file mode 100644 index ddb091a..0000000 Binary files a/plasmoid/contents/images/qabackground.png and /dev/null differ diff --git a/plasmoid/contents/images/rain.gif b/plasmoid/contents/images/rain.gif deleted file mode 100644 index c89862e..0000000 Binary files a/plasmoid/contents/images/rain.gif and /dev/null differ diff --git a/plasmoid/contents/images/readaloud.png b/plasmoid/contents/images/readaloud.png deleted file mode 100644 index 23c7424..0000000 Binary files a/plasmoid/contents/images/readaloud.png and /dev/null differ diff --git a/plasmoid/contents/images/reminder.png b/plasmoid/contents/images/reminder.png deleted file mode 100644 index ddce231..0000000 Binary files a/plasmoid/contents/images/reminder.png and /dev/null differ diff --git a/plasmoid/contents/images/share.png b/plasmoid/contents/images/share.png deleted file mode 100644 index 1747357..0000000 Binary files a/plasmoid/contents/images/share.png and /dev/null differ diff --git a/plasmoid/contents/images/sj.png b/plasmoid/contents/images/sj.png deleted file mode 100644 index a869c8d..0000000 Binary files a/plasmoid/contents/images/sj.png and /dev/null differ diff --git a/plasmoid/contents/images/snow.gif b/plasmoid/contents/images/snow.gif deleted file mode 100644 index 68c9517..0000000 Binary files a/plasmoid/contents/images/snow.gif and /dev/null differ diff --git a/plasmoid/contents/images/spell.png b/plasmoid/contents/images/spell.png deleted file mode 100644 index 4128107..0000000 Binary files a/plasmoid/contents/images/spell.png and /dev/null differ diff --git a/plasmoid/contents/images/stocks.png b/plasmoid/contents/images/stocks.png deleted file mode 100644 index cda9bcf..0000000 Binary files a/plasmoid/contents/images/stocks.png and /dev/null differ diff --git a/plasmoid/contents/images/turnleft.png b/plasmoid/contents/images/turnleft.png deleted file mode 100644 index 276a680..0000000 Binary files a/plasmoid/contents/images/turnleft.png and /dev/null differ diff --git a/plasmoid/contents/images/turnnorth.png b/plasmoid/contents/images/turnnorth.png deleted file mode 100644 index be0f605..0000000 Binary files a/plasmoid/contents/images/turnnorth.png and /dev/null differ diff --git a/plasmoid/contents/images/turnramp.png b/plasmoid/contents/images/turnramp.png deleted file mode 100644 index 97af249..0000000 Binary files a/plasmoid/contents/images/turnramp.png and /dev/null differ diff --git a/plasmoid/contents/images/turnright.png b/plasmoid/contents/images/turnright.png deleted file mode 100644 index c3dfdc0..0000000 Binary files a/plasmoid/contents/images/turnright.png and /dev/null differ diff --git a/plasmoid/contents/images/turnuturn.png b/plasmoid/contents/images/turnuturn.png deleted file mode 100644 index 2675a1a..0000000 Binary files a/plasmoid/contents/images/turnuturn.png and /dev/null differ diff --git a/plasmoid/contents/images/up.png b/plasmoid/contents/images/up.png deleted file mode 100644 index 248365a..0000000 Binary files a/plasmoid/contents/images/up.png and /dev/null differ diff --git a/plasmoid/contents/images/weather.png b/plasmoid/contents/images/weather.png deleted file mode 100644 index 805d3d0..0000000 Binary files a/plasmoid/contents/images/weather.png and /dev/null differ diff --git a/plasmoid/contents/images/weathericon.png b/plasmoid/contents/images/weathericon.png deleted file mode 100644 index 6fd6ce6..0000000 Binary files a/plasmoid/contents/images/weathericon.png and /dev/null differ diff --git a/plasmoid/contents/images/wiki.svg b/plasmoid/contents/images/wiki.svg deleted file mode 100644 index e10cdfd..0000000 Binary files a/plasmoid/contents/images/wiki.svg and /dev/null differ diff --git a/plasmoid/contents/images/wikip.png b/plasmoid/contents/images/wikip.png deleted file mode 100644 index 781c6f2..0000000 Binary files a/plasmoid/contents/images/wikip.png and /dev/null differ diff --git a/plasmoid/contents/images/wolfram.png b/plasmoid/contents/images/wolfram.png deleted file mode 100644 index bf35935..0000000 Binary files a/plasmoid/contents/images/wolfram.png and /dev/null differ diff --git a/plasmoid/contents/ui/AskMessageType.qml b/plasmoid/contents/ui/AskMessageType.qml deleted file mode 100644 index e47f519..0000000 --- a/plasmoid/contents/ui/AskMessageType.qml +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.plasma.core 2.0 as PlasmaCore -import QtGraphicalEffects 1.0 - -Item { - width: cbwidth - height: messageRect.height + timeStampLabel.height - property alias mssg: messageText.text - - Column{ - anchors.fill: parent - spacing: 1 - - Item { - id: messageRectFrameItem - anchors.right: parent.right - width: parent.width - height: messageRect.height - - Rectangle { - id: messageRect - anchors.right: messageRectedge.left - anchors.rightMargin: -2 - implicitWidth: messageText.width + 10 - radius: 2 - height: messageText.implicitHeight + 24 - color: theme.linkColor - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - MouseArea { - anchors.fill: parent - hoverEnabled: true - propagateComposedEvents: true - onEntered: { - messageRect.color = Qt.darker(theme.linkColor, 1.2) - messageRectedgeOverLay.color = Qt.darker(theme.linkColor, 1.2) - } - onExited: { - messageRect.color = theme.linkColor - messageRectedgeOverLay.color = theme.linkColor - } - onClicked: { - askCtxMenu.open() - } - } - - PlasmaComponents.Label { - id: messageText - anchors.centerIn: parent - wrapMode: Label.Wrap - color: theme.backgroundColor - - Component.onCompleted: { - var askText = model.InputQuery - var fixedText = askText.substr(0,1).toUpperCase() + askText.substr(1).toLowerCase() - messageText.text = fixedText - } - } - } - - Image { - id: messageRectedge - anchors.right: parent.right - anchors.verticalCenter: messageRect.verticalCenter - source: "../images/arright.png" - width: units.gridUnit * 0.50 - height: messageRect.height / 2 - } - - ColorOverlay { - id: messageRectedgeOverLay - anchors.fill: messageRectedge - source: messageRectedge - color: theme.linkColor - } - } - - Text{ - id: timeStampLabel - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.50 - width: units.gridUnit * 2.5 - height: units.gridUnit * 0.50 - color: Qt.darker(theme.textColor, 1.5) - font.pointSize: theme.defaultFont.pointSize - 2 - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - text: currentDate.toLocaleTimeString(Qt.locale(), Locale.ShortFormat); - } - } - - AskMessageTypeMenu{ - id: askCtxMenu - } - } diff --git a/plasmoid/contents/ui/AskMessageTypeMenu.qml b/plasmoid/contents/ui/AskMessageTypeMenu.qml deleted file mode 100644 index 52df9d4..0000000 --- a/plasmoid/contents/ui/AskMessageTypeMenu.qml +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.plasma.core 2.0 as PlasmaCore -import QtGraphicalEffects 1.0 - -Drawer { - id: askTypeMenuItem - width: dwrpaddedwidth - height: removeRectbtn.height + searchRectbtn.height - edge: Qt.TopEdge - dragMargin: 0 - - Rectangle { - id: askMenuRectItem - anchors.fill: parent - color: theme.backgroundColor - - Column { - id: menuRectColumn - anchors.fill: parent - - Rectangle { - id: removeRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: removeRectIcon - anchors.verticalCenter: parent.verticalCenter - source: "window-close" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: removeRectSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: removeRectLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Remove") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - removeRectLabel.color = theme.linkColor - } - onExited:{ - removeRectLabel.color = theme.textColor - } - onClicked:{ - convoLmodel.remove(index) - } - } - } - - Rectangle { - id: btnshorzSepr1 - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: searchRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: searchRectIcon - anchors.verticalCenter: parent.verticalCenter - source: "system-search" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: searchRectSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: searchRectLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Search Online") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - searchRectLabel.color = theme.linkColor - } - onExited:{ - searchRectLabel.color = theme.textColor - } - onClicked:{ - Qt.openUrlExternally("https://duckduckgo.com/?q=" + model.InputQuery) - } - } - } - - Rectangle { - id: btnshorzSeprEnd - width: parent.width - height: units.gridUnit * 0.75 - color: theme.linkColor - - PlasmaCore.IconItem { - id: closemenuDrawer - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - } - } - } - } diff --git a/plasmoid/contents/ui/AudioFileDelegate.qml b/plasmoid/contents/ui/AudioFileDelegate.qml deleted file mode 100644 index bc51c13..0000000 --- a/plasmoid/contents/ui/AudioFileDelegate.qml +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtMultimedia 5.8 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: audioFileDelegateItm - implicitHeight: audioFileDelegateInner.height - color: Qt.darker(theme.backgroundColor, 1.2) - width: cbwidth - - Item { - id: audioFileDelegateInner - implicitHeight: Math.max(audioInnerInfoColumn.height, playAudioBtn.height + units.gridUnit * 1) - width: parent.width - - PlasmaCore.IconItem { - id: audioImgType - source: "new-audio-alarm" - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - anchors.verticalCenter: parent.verticalCenter - } - - Item { - id: audioInnerInfoColumn - implicitHeight: audioFileName.implicitHeight + sprTrinnerAudio.height + audioFileLoc.implicitHeight + units.gridUnit * 0.50 - anchors.left: audioImgType.right - anchors.leftMargin: units.gridUnit * 0.30 - anchors.right: playAudioBtn.left - anchors.rightMargin: units.gridUnit * 0.30 - - PlasmaComponents.Label { - id: audioFileName - color: theme.textColor - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.topMargin: units.gridUnit * 0.25 - wrapMode: Text.Wrap - height: units.gridUnit * 1 - - Component.onCompleted: { - var filterName = InputQuery.toString(); - audioFileName.text = filterName.match(/\/([^\/]+)\/?$/)[1] - } - } - - Rectangle { - id: sprTrinnerAudio - anchors.left: parent.left - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 1 - anchors.top: audioFileName.bottom - anchors.topMargin: units.gridUnit * 0.15 - color: theme.linkColor - height: units.gridUnit * 0.1 - } - - PlasmaComponents.Label { - id: audioFileLoc - color: theme.linkColor - font.pixelSize: 12 - anchors.left: parent.left - anchors.right: parent.right - anchors.top: sprTrinnerAudio.bottom - height: units.gridUnit * 1 - wrapMode: Text.Wrap - Component.onCompleted: { - audioFileLoc.text = i18n("Location: %1", InputQuery) - } - } - } - - PlasmaComponents.Button { - id: playAudioBtn - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.75 - anchors.verticalCenter: parent.verticalCenter - width: units.gridUnit * 3.5 - height: units.gridUnit * 3 - text: i18n("Listen") - - onClicked: { - var audFile = Qt.resolvedUrl(InputQuery) - Qt.openUrlExternally(audFile) - } - } - } - } diff --git a/plasmoid/contents/ui/AutocompleteBox.qml b/plasmoid/contents/ui/AutocompleteBox.qml index a0126a4..93f1f96 100644 --- a/plasmoid/contents/ui/AutocompleteBox.qml +++ b/plasmoid/contents/ui/AutocompleteBox.qml @@ -1,150 +1,150 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ -import QtQuick 2.7 +import QtQuick 2.9 import QtQuick.Controls 2.2 import QtQuick.Layouts 1.3 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import QtGraphicalEffects 1.0 Rectangle { id: container implicitHeight: autoCompListView.implicitHeight - implicitWidth: cbwidth + implicitWidth: parent.width color: theme.backgroundColor border.width: 1 border.color: Qt.lighter(theme.backgroundColor, 1.2); property QtObject model: undefined property int count: filterItem.model.count property alias suggestionsModel: filterItem.model property alias filter: filterItem.filter property alias property: filterItem.property property alias navView: autoCompListView signal itemSelected(variant item) function filterMatchesLastSuggestion() { return suggestionsModel.count == 1 && suggestionsModel.get(0).name === filter } visible: filter.length > 0 && suggestionsModel.count > 0 && !filterMatchesLastSuggestion() Logic { id: filterItem sourceModel: container.model } ListView{ id: autoCompListView anchors.fill: parent model: container.suggestionsModel implicitHeight: contentItem.childrenRect.height verticalLayoutDirection: ListView.TopToBottom keyNavigationEnabled: true keyNavigationWraps: true clip: true delegate: Item { id: delegateItem property bool keyboardSelected: autoCompListView.selectedIndex === suggestion.index property bool selected: itemMouseArea.containsMouse property variant suggestion: model height: textComponent.height + units.gridUnit * 2 width: container.width FocusScope{ anchors.fill:parent focus: true - Rectangle{ - id: autdelRect - color: delegateItem.selected ? Qt.darker(theme.textColor, 1.2) : Qt.darker(theme.backgroundColor, 1.2) - width: parent.width - height: textComponent.height + units.gridUnit * 2 - - PlasmaCore.IconItem { - id : smallIconV - source: "text-speak" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.35 - } - - PlasmaCore.SvgItem { + Rectangle{ + id: autdelRect + color: delegateItem.selected ? Qt.darker(theme.textColor, 1.2) : Qt.darker(theme.backgroundColor, 1.2) + width: parent.width + height: textComponent.height + units.gridUnit * 2 + + PlasmaCore.IconItem { + id : smallIconV + source: "text-speak" + width: units.gridUnit * 2 + height: units.gridUnit * 2 + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: units.gridUnit * 0.35 + } + + PlasmaCore.SvgItem { id: innerDelegateRectDividerLine anchors { left: smallIconV.right leftMargin: units.gridUnit * 0.35 top: parent.top topMargin: 0 bottom: parent.bottom bottomMargin: 0 } - width: lineitemdividerSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" + width: lineitemdividerSvg.elementSize("vertical-line").width + z: 110 + elementId: "vertical-line" - svg: PlasmaCore.Svg { - id: lineitemdividerSvg; - imagePath: "widgets/line" + svg: PlasmaCore.Svg { + id: lineitemdividerSvg; + imagePath: "widgets/line" + } } - } - - Text { - id: textComponent - anchors.left: innerDelegateRectDividerLine.right - anchors.leftMargin: units.gridUnit * 0.35 - color: delegateItem.selected ? Qt.darker(theme.backgroundColor, 1.2) : Qt.darker(theme.textColor, 1.2) - text: model.name; - width: parent.width - 4 - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - } - - MouseArea { - id: itemMouseArea - anchors.fill: parent - hoverEnabled: true - onClicked: container.itemSelected(delegateItem.suggestion) + + Text { + id: textComponent + anchors.left: innerDelegateRectDividerLine.right + anchors.leftMargin: units.gridUnit * 0.35 + color: delegateItem.selected ? Qt.darker(theme.backgroundColor, 1.2) : Qt.darker(theme.textColor, 1.2) + text: model.name; + width: parent.width - 4 + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter } - - PlasmaCore.SvgItem { - anchors { - left: parent.left - right: parent.right - bottom: parent.bottom + + MouseArea { + id: itemMouseArea + anchors.fill: parent + hoverEnabled: true + onClicked: container.itemSelected(delegateItem.suggestion) } - width: 1 - height: horlineAutoCSvg.elementSize("horizontal-line").height - - elementId: "horizontal-line" - z: 110 - svg: PlasmaCore.Svg { - id: horlineAutoCSvg; - imagePath: "widgets/line" + + PlasmaCore.SvgItem { + anchors { + left: parent.left + right: parent.right + bottom: parent.bottom } - } + width: 1 + height: horlineAutoCSvg.elementSize("horizontal-line").height + + elementId: "horizontal-line" + z: 110 + svg: PlasmaCore.Svg { + id: horlineAutoCSvg; + imagePath: "widgets/line" + } + } } - } - } - ScrollBar.vertical: ScrollBar { } + } + } + ScrollBar.vertical: ScrollBar { } } } diff --git a/plasmoid/contents/ui/BookDelegate.qml b/plasmoid/contents/ui/BookDelegate.qml deleted file mode 100644 index 72b5645..0000000 --- a/plasmoid/contents/ui/BookDelegate.qml +++ /dev/null @@ -1,191 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Rectangle { - id: bookDelegateItem - height: bookContentDelegateItem.height - width: cbwidth - border.width: 1 - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - Item { - id: bookContentDelegateItem - width: parent.width - units.gridUnit * 0.05 - height: topRowLayout.height + bookHeaderItemSeparator.height + bookContentInnerItem.height + buttnRow.height - - Rectangle { - id: topRowLayout - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: bookContentHeader.implicitHeight + units.gridUnit * 0.5 - color: theme.linkColor - - Text { - id: bookContentHeader - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - width: parent.width - wrapMode: Text.Wrap; - font.bold: true; - font.capitalization: Font.SmallCaps - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18n(model.booktitle) - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onEntered: { - bookContentHeader.color = PlasmaCore.ColorScope.backgroundColor - bookContentHeader.font.underline = true - } - onExited: { - bookContentHeader.color = PlasmaCore.ColorScope.textColor - bookContentHeader.font.underline = false - } - onClicked: { - Qt.openUrlExternally(bookurl) - } - } - } - } - - Rectangle { - id: bookHeaderItemSeparator - width: parent.width - anchors.top: topRowLayout.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Item { - id: bookContentInnerItem - width: parent.width - height: cbheight / 2.75 - anchors.top: bookHeaderItemSeparator.bottom - anchors.topMargin: 1 - - Image { - id: bookImageItem - anchors.left: parent.left - source: model.bookcover - width: parent.width / 2.75 - height: parent.height - } - - Item { - id: bookContentAddInfo - anchors.left: bookImageItem.right - anchors.leftMargin: units.gridUnit * 2 - anchors.right: parent.right - height: parent.height - - Column { - id: additionalInfoColumn - width: parent.width - height: parent.height - spacing: 1.5 - - PlasmaComponents.Label { - id: bookAuthorLabel - font.capitalization: Font.Capitalize - text: i18n("Author: %1", bookauthor) - } - - PlasmaComponents.Label { - id: bookPublisherLabel - font.capitalization: Font.Capitalize - text: i18n("Publisher: %1", bookpublisher) - } - - PlasmaComponents.Label { - id: bookYearLabel - font.capitalization: Font.Capitalize - text: i18n("Release Year: %1", bookdate) - } - - PlasmaComponents.Label { - id: bookAvailableLabel - font.capitalization: Font.Capitalize - text: i18n("Availability: %1", bookstatus) - } - } - } - } - - Row { - id: buttnRow - height: units.gridUnit * 2 - anchors.top: bookContentInnerItem.bottom - - PlasmaComponents.Button { - id: bookReadOnlineBtn - width: cbwidth / 2 - height: units.gridUnit * 2 - text: i18n("Read Online") - - onClicked: { - Qt.openUrlExternally(bookurl); - } - } - - PlasmaComponents.Button { - id: bookDownloadBtn - width: cbwidth / 2 - height: units.gridUnit * 2 - text: i18n("Download") - - onClicked: { - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = ["download available book"]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - } - } -} diff --git a/plasmoid/contents/ui/BottomBarViewComponent.qml b/plasmoid/contents/ui/BottomBarViewComponent.qml new file mode 100644 index 0000000..9d92a05 --- /dev/null +++ b/plasmoid/contents/ui/BottomBarViewComponent.qml @@ -0,0 +1,126 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 as Controls +import QtQuick.Layouts 1.3 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.extras 2.0 as PlasmaExtras +import org.kde.kirigami 2.5 as Kirigami +import QtGraphicalEffects 1.0 +import Mycroft 1.0 as Mycroft + +Item { + id: appletBottomBarComponent + anchors.fill: parent + property alias autoCompModel: completionItems + property alias queryInput: qinput + property var lastMessage + + function autoAppend(model, getinputstring, setinputstring) { + for(var i = 0; i < model.count; ++i) + if (getinputstring(model.get(i))){ + return true + } + return null + } + + function evalAutoLogic() { + if (suggestionsBox.currentIndex === -1) { + } else { + suggestionsBox.complete(suggestionsBox.currentItem) + } + } + + + ListModel { + id: completionItems + } + + ColumnLayout { + anchors.fill: parent + + + RowLayout{ + Layout.fillWidth: true + Layout.fillHeight: true + + PlasmaComponents.TextField { + id: qinput + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 2 + placeholderText: i18n("Enter Query or Say 'Hey Mycroft'") + clearButtonShown: true + + onAccepted: { + if(qinput.text !== ""){ + lastMessage = qinput.text + } + var doesExist = appletBottomBarComponent.autoAppend(autoCompModel, function(item) { return item.name === qinput.text }, qinput.text) + var evaluateExist = doesExist + if(evaluateExist === null){ + autoCompModel.append({"name": qinput.text}); + } + Mycroft.MycroftController.sendText(qinput.text); + Mycroft.MycroftController.sendRequest('mycroft.qinput.text', {"inputQuery": qinput.Text}) + qinput.text = ""; + } + + onTextChanged: { + appletBottomBarComponent.evalAutoLogic(); + } + + AutocompleteBox { + id: suggestionsBox + model: completionItems + width: parent.width + anchors.bottom: parent.top + anchors.left: parent.left + anchors.right: parent.right + filter: qinput.text + property: "name" + onItemSelected: complete(item) + + function complete(item) { + if (item !== undefined) + qinput.text = item.name + } + } + } + + PlasmaComponents.Button { + Layout.preferredHeight: Kirigami.Units.iconSizes.medium + Layout.preferredWidth: Kirigami.Units.iconSizes.medium + Kirigami.Icon{ + anchors.centerIn: parent + width: Kirigami.Units.iconSizes.small + height: Kirigami.Units.iconSizes.small + source: "audio-input-microphone" + } + onClicked: { + audioRecorder.open() + } + visible: plasmoid.configuration.enableRemoteSTT + } + } + } +} diff --git a/plasmoid/contents/ui/ConversationDelegate.qml b/plasmoid/contents/ui/ConversationDelegate.qml new file mode 100644 index 0000000..a8751f1 --- /dev/null +++ b/plasmoid/contents/ui/ConversationDelegate.qml @@ -0,0 +1,80 @@ +/* Copyright 2019 Aditya Mehra + Copyright 2018 Marco Martin + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtGraphicalEffects 1.0 +import QtQuick.Controls 2.2 as Controls +import QtQuick.Layouts 1.3 + +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.kirigami 2.5 as Kirigami + +Item { + id: root + + width: parent.width - Kirigami.Units.largeSpacing + height: delegate.height + + Controls.Control { + id: delegate + + anchors { + top: parent.top + left: model.inbound ? parent.left : undefined + right: model.inbound ? undefined : parent.right + margins: Kirigami.Units.smallSpacing + } + + padding: Kirigami.Units.gridUnit/2 + + width: Math.min(implicitWidth, parent.width - Kirigami.Units.smallSpacing*2) + + contentItem: Controls.Label { + text: model.text + wrapMode: Text.WordWrap + } + background: Rectangle { + radius: Kirigami.Units.gridUnit/2 + color: Kirigami.Theme.backgroundColor + + Rectangle { + anchors { + left: model.inbound ? parent.left : undefined + top: model.inbound ? parent.top : undefined + right: model.inbound ? undefined : parent.right + bottom: model.inbound ? undefined : parent.bottom + } + width: Kirigami.Units.gridUnit + height: width + color: Kirigami.Theme.backgroundColor + } + + layer.enabled: true + layer.effect: DropShadow { + horizontalOffset: 0 + verticalOffset: Kirigami.Units.gridUnit/8 + radius: Kirigami.Units.gridUnit/2 + samples: 32 + color: Qt.rgba(0, 0, 0, 0.5) + } + } + } +} diff --git a/plasmoid/contents/ui/CrypCurModel.qml b/plasmoid/contents/ui/CrypCurModel.qml deleted file mode 100644 index 0f01b8b..0000000 --- a/plasmoid/contents/ui/CrypCurModel.qml +++ /dev/null @@ -1,2607 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License or (at your option) version 3 or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.) which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not see . -*/ - -import QtQuick 2.9 - -ListModel { - id: cryptocurrencymodel - ListElement { cryptoname: "Dogecoin"; value: "DOGE"} - ListElement { cryptoname: "ZCash"; value: "ZEC"} - ListElement { cryptoname: "Bitshares"; value: "BTS"} - ListElement { cryptoname: "DigiByte"; value: "DGB"} - ListElement { cryptoname: "BitcoinDark"; value: "BTCD"} - ListElement { cryptoname: "PeerCoin"; value: "PPC"} - ListElement { cryptoname: "CraigsCoin"; value: "CRAIG"} - ListElement { cryptoname: "Bitstake"; value: "XBS"} - ListElement { cryptoname: "PayCoin"; value: "XPY"} - ListElement { cryptoname: "ProsperCoin"; value: "PRC"} - ListElement { cryptoname: "YbCoin"; value: "YBC"} - ListElement { cryptoname: "DarkKush"; value: "DANK"} - ListElement { cryptoname: "GiveCoin"; value: "GIVE"} - ListElement { cryptoname: "KoboCoin"; value: "KOBO"} - ListElement { cryptoname: "DarkToken"; value: "DT"} - ListElement { cryptoname: "CETUS Coin"; value: "CETI"} - ListElement { cryptoname: "Supcoin"; value: "SUP"} - ListElement { cryptoname: "PetroDollar"; value: "XPD"} - ListElement { cryptoname: "GeoCoin"; value: "GEO"} - ListElement { cryptoname: "CleverHash"; value: "CHASH"} - ListElement { cryptoname: "Spreadcoin"; value: "SPR"} - ListElement { cryptoname: "NXTI"; value: "NXTI"} - ListElement { cryptoname: "Insanity Coin"; value: "WOLF"} - ListElement { cryptoname: "DogeParty"; value: "XDP"} - ListElement { cryptoname: "Asia Coin"; value: "AC"} - ListElement { cryptoname: "ACoin"; value: "ACOIN"} - ListElement { cryptoname: "Aero Coin"; value: "AERO"} - ListElement { cryptoname: "AlphaCoin"; value: "ALF"} - ListElement { cryptoname: "Aegis"; value: "AGS"} - ListElement { cryptoname: "AmericanCoin"; value: "AMC"} - ListElement { cryptoname: "AlienCoin"; value: "ALN"} - ListElement { cryptoname: "ApexCoin"; value: "APEX"} - ListElement { cryptoname: "ArchCoin"; value: "ARCH"} - ListElement { cryptoname: "Argentum"; value: "ARG"} - ListElement { cryptoname: "AriCoin"; value: "ARI"} - ListElement { cryptoname: "Aurora Coin"; value: "AUR"} - ListElement { cryptoname: "AXRON"; value: "AXR"} - ListElement { cryptoname: "BattleCoin"; value: "BCX"} - ListElement { cryptoname: "Benjamins"; value: "BEN"} - ListElement { cryptoname: "BetaCoin"; value: "BET"} - ListElement { cryptoname: "BitBean"; value: "BITB"} - ListElement { cryptoname: "BlueCoin"; value: "BLU"} - ListElement { cryptoname: "BlackCoin"; value: "BLK"} - ListElement { cryptoname: "BoostCoin"; value: "BOST"} - ListElement { cryptoname: "BQCoin"; value: "BQC"} - ListElement { cryptoname: "MyriadCoin"; value: "XMY"} - ListElement { cryptoname: "MoonCoin"; value: "MOON"} - ListElement { cryptoname: "ZetaCoin"; value: "ZET"} - ListElement { cryptoname: "Quatloo"; value: "QTL"} - ListElement { cryptoname: "EnergyCoin"; value: "ENRG"} - ListElement { cryptoname: "QuarkCoin"; value: "QRK"} - ListElement { cryptoname: "Riecoin"; value: "RIC"} - ListElement { cryptoname: "DigiCoin"; value: "DGC"} - ListElement { cryptoname: "LimeCoinX"; value: "LIMX"} - ListElement { cryptoname: "BitBar"; value: "BTB"} - ListElement { cryptoname: "CAIx"; value: "CAIx"} - ListElement { cryptoname: "ByteCoin"; value: "BTE"} - ListElement { cryptoname: "BitGem"; value: "BTG*"} - ListElement { cryptoname: "BitMark"; value: "BTM"} - ListElement { cryptoname: "CryptoBuk"; value: "BUK"} - ListElement { cryptoname: "Cachecoin"; value: "CACH"} - ListElement { cryptoname: "CannabisCoin"; value: "CANN"} - ListElement { cryptoname: "BottleCaps"; value: "CAP"} - ListElement { cryptoname: "CashCoin"; value: "CASH"} - ListElement { cryptoname: "Catcoin"; value: "CAT1"} - ListElement { cryptoname: "CannaCoin"; value: "CCN"} - ListElement { cryptoname: "CinderCoin"; value: "CIN"} - ListElement { cryptoname: "CINNICOIN"; value: "CINNI"} - ListElement { cryptoname: "CheckCoin"; value: "CXC"} - ListElement { cryptoname: "CLAMS"; value: "CLAM"} - ListElement { cryptoname: "CloakCoin"; value: "CLOAK"} - ListElement { cryptoname: "CopperLark"; value: "CLR"} - ListElement { cryptoname: "CosmosCoin"; value: "CMC"} - ListElement { cryptoname: "ChinaCoin"; value: "CNC"} - ListElement { cryptoname: "ConcealCoin"; value: "CNL"} - ListElement { cryptoname: "Community Coin"; value: "COMM"} - ListElement { cryptoname: "CoolCoin"; value: "COOL"} - ListElement { cryptoname: "CrackCoin"; value: "CRACK"} - ListElement { cryptoname: "CraftCoin"; value: "CRC*"} - ListElement { cryptoname: "CryptCoin"; value: "CRYPT"} - ListElement { cryptoname: "eMark"; value: "DEM"} - ListElement { cryptoname: "Diamond"; value: "DMD"} - ListElement { cryptoname: "DarkCash"; value: "DRKC"} - ListElement { cryptoname: "DarkShibe"; value: "DSB"} - ListElement { cryptoname: "DevCoin"; value: "DVC"} - ListElement { cryptoname: "E-Gulden"; value: "EFL"} - ListElement { cryptoname: "Elacoin"; value: "ELC"} - ListElement { cryptoname: "Einsteinium"; value: "EMC2"} - ListElement { cryptoname: "Emerald"; value: "EMD"} - ListElement { cryptoname: "Exclusive Coin"; value: "EXCL"} - ListElement { cryptoname: "ExeCoin"; value: "EXE"} - ListElement { cryptoname: "EZCoin"; value: "EZC"} - ListElement { cryptoname: "Flappy Coin"; value: "FLAP"} - ListElement { cryptoname: "Fuel2Coin"; value: "FC2"} - ListElement { cryptoname: "FireflyCoin"; value: "FFC"} - ListElement { cryptoname: "FIBRE"; value: "FIBRE"} - ListElement { cryptoname: "FireRoosterCoin"; value: "FRC"} - ListElement { cryptoname: "FlutterCoin"; value: "FLT"} - ListElement { cryptoname: "Franko"; value: "FRK"} - ListElement { cryptoname: "FractalCoin"; value: "FRAC"} - ListElement { cryptoname: "FastCoin"; value: "FST"} - ListElement { cryptoname: "FeatherCoin"; value: "FTC"} - ListElement { cryptoname: "GrandCoin"; value: "GDC"} - ListElement { cryptoname: "GlobalCoin"; value: "GLC"} - ListElement { cryptoname: "GoldCoin"; value: "GLD"} - ListElement { cryptoname: "GalaxyCoin"; value: "GLX"} - ListElement { cryptoname: "GlyphCoin"; value: "GLYPH"} - ListElement { cryptoname: "GameLeagueCoin"; value: "GML"} - ListElement { cryptoname: "GuerillaCoin"; value: "GUE"} - ListElement { cryptoname: "Halcyon"; value: "HAL"} - ListElement { cryptoname: "HoboNickels"; value: "HBN"} - ListElement { cryptoname: "HunterCoin"; value: "HUC"} - ListElement { cryptoname: "HeavyCoin"; value: "HVC"} - ListElement { cryptoname: "Hyperstake"; value: "HYP"} - ListElement { cryptoname: "IceBergCoin"; value: "ICB"} - ListElement { cryptoname: "Infinite Coin"; value: "IFC"} - ListElement { cryptoname: "IOCoin"; value: "IOC"} - ListElement { cryptoname: "IXcoin"; value: "IXC"} - ListElement { cryptoname: "JumBucks Coin"; value: "JBS"} - ListElement { cryptoname: "JunkCoin"; value: "JKC"} - ListElement { cryptoname: "JudgeCoin"; value: "JUDGE"} - ListElement { cryptoname: "Klondike Coin"; value: "KDC"} - ListElement { cryptoname: "KeyCoin"; value: "KEY*"} - ListElement { cryptoname: "KrugerCoin"; value: "KGC"} - ListElement { cryptoname: "CoinWorksCoin"; value: "LAB*"} - ListElement { cryptoname: "Legendary Coin"; value: "LGD*"} - ListElement { cryptoname: "Lucky7Coin"; value: "LK7"} - ListElement { cryptoname: "LuckyCoin"; value: "LKY"} - ListElement { cryptoname: "LightSpeedCoin"; value: "LSD"} - ListElement { cryptoname: "Litebar "; value: "LTB"} - ListElement { cryptoname: "LitecoinDark"; value: "LTCD"} - ListElement { cryptoname: "LitecoinX"; value: "LTCX"} - ListElement { cryptoname: "LibrexCoin"; value: "LXC"} - ListElement { cryptoname: "LycanCoin"; value: "LYC"} - ListElement { cryptoname: "MaxCoin"; value: "MAX"} - ListElement { cryptoname: "MegaCoin"; value: "MEC"} - ListElement { cryptoname: "MediterraneanCoin"; value: "MED"} - ListElement { cryptoname: "Minerals Coin"; value: "MIN"} - ListElement { cryptoname: "MintCoin"; value: "MINT"} - ListElement { cryptoname: "Cryptsy Mining Contract"; value: "MN"} - ListElement { cryptoname: "MinCoin"; value: "MNC"} - ListElement { cryptoname: "MurrayCoin"; value: "MRY"} - ListElement { cryptoname: "MysteryCoin"; value: "MYST*"} - ListElement { cryptoname: "MazaCoin"; value: "MZC"} - ListElement { cryptoname: "NanoToken"; value: "NAN"} - ListElement { cryptoname: "Nautilus Coin"; value: "NAUT"} - ListElement { cryptoname: "NavCoin"; value: "NAV"} - ListElement { cryptoname: "Nybble"; value: "NBL"} - ListElement { cryptoname: "NeoCoin"; value: "NEC"} - ListElement { cryptoname: "NetCoin"; value: "NET"} - ListElement { cryptoname: "Nimbus Coin"; value: "NMB"} - ListElement { cryptoname: "NoirBits"; value: "NRB"} - ListElement { cryptoname: "NobleCoin"; value: "NOBL"} - ListElement { cryptoname: "NoirShares"; value: "NRS"} - ListElement { cryptoname: "NovaCoin"; value: "NVC"} - ListElement { cryptoname: "NameCoin"; value: "NMC"} - ListElement { cryptoname: "NyanCoin"; value: "NYAN"} - ListElement { cryptoname: "OpalCoin"; value: "OPAL"} - ListElement { cryptoname: "Orbitcoin"; value: "ORB"} - ListElement { cryptoname: "OpenSourceCoin"; value: "OSC"} - ListElement { cryptoname: "PhilosophersStone"; value: "PHS"} - ListElement { cryptoname: "Cryptsy Points"; value: "POINTS"} - ListElement { cryptoname: "PotCoin"; value: "POT"} - ListElement { cryptoname: "PseudoCash"; value: "PSEUD"} - ListElement { cryptoname: "Protoshares"; value: "PTS*"} - ListElement { cryptoname: "PhoenixCoin"; value: "PXC"} - ListElement { cryptoname: "PayCoin"; value: "PYC"} - ListElement { cryptoname: "RipOffCoin"; value: "RIPO"} - ListElement { cryptoname: "RonPaulCoin"; value: "RPC"} - ListElement { cryptoname: "RotoCoin"; value: "RT2"} - ListElement { cryptoname: "RoyalCoin"; value: "RYC"} - ListElement { cryptoname: "RazorCoin"; value: "RZR"} - ListElement { cryptoname: "Saturn2Coin"; value: "SAT2"} - ListElement { cryptoname: "StableCoin"; value: "SBC"} - ListElement { cryptoname: "ShadowCash"; value: "SDC"} - ListElement { cryptoname: "SaffronCoin"; value: "SFR"} - ListElement { cryptoname: "ShadeCoin"; value: "SHADE"} - ListElement { cryptoname: "ShieldCoin"; value: "SHLD"} - ListElement { cryptoname: "SilkCoin"; value: "SILK"} - ListElement { cryptoname: "SterlingCoin"; value: "SLG"} - ListElement { cryptoname: "SmartCoin"; value: "SMC"} - ListElement { cryptoname: "SoleCoin"; value: "SOLE"} - ListElement { cryptoname: "Spots"; value: "SPT"} - ListElement { cryptoname: "SecureCoin"; value: "SRC"} - ListElement { cryptoname: "SSVCoin"; value: "SSV"} - ListElement { cryptoname: "Stellar"; value: "XLM"} - ListElement { cryptoname: "BitSwift"; value: "SWIFT"} - ListElement { cryptoname: "SyncCoin"; value: "SYNC"} - ListElement { cryptoname: "SysCoin"; value: "SYS"} - ListElement { cryptoname: "TagCoin"; value: "TAG"} - ListElement { cryptoname: "TakCoin"; value: "TAK"} - ListElement { cryptoname: "TigerCoin"; value: "TGC"} - ListElement { cryptoname: "TitCoin"; value: "TIT"} - ListElement { cryptoname: "TorCoin"; value: "TOR"} - ListElement { cryptoname: "TerraCoin"; value: "TRC"} - ListElement { cryptoname: "TittieCoin"; value: "TTC"} - ListElement { cryptoname: "Umbrella"; value: "ULTC"} - ListElement { cryptoname: "UnbreakableCoin"; value: "UNB"} - ListElement { cryptoname: "Unobtanium"; value: "UNO"} - ListElement { cryptoname: "UroCoin"; value: "URO"} - ListElement { cryptoname: "UnitaryStatus Dollar"; value: "USDE"} - ListElement { cryptoname: "UltraCoin"; value: "UTC"} - ListElement { cryptoname: "Utility Coin"; value: "UTIL"} - ListElement { cryptoname: "VidioCoin"; value: "VDO"} - ListElement { cryptoname: "ViaCoin"; value: "VIA"} - ListElement { cryptoname: "VootCoin"; value: "VOOT"} - ListElement { cryptoname: "VeriCoin"; value: "VRC"} - ListElement { cryptoname: "WhiteCoin"; value: "WC"} - ListElement { cryptoname: "WorldCoin"; value: "WDC"} - ListElement { cryptoname: "SapienceCoin"; value: "XAI"} - ListElement { cryptoname: "SocialXbotCoin"; value: "XBOT"} - ListElement { cryptoname: "X11 Coin"; value: "XC"} - ListElement { cryptoname: "Xcash"; value: "XCASH"} - ListElement { cryptoname: "Crypti"; value: "XCR"} - ListElement { cryptoname: "JouleCoin"; value: "XJO"} - ListElement { cryptoname: "LibertyCoin"; value: "XLB"} - ListElement { cryptoname: "PrimeCoin"; value: "XPM"} - ListElement { cryptoname: "StealthCoin"; value: "XST"} - ListElement { cryptoname: "XXXCoin"; value: "XXX"} - ListElement { cryptoname: "YAcCoin"; value: "YAC"} - ListElement { cryptoname: "ZCC Coin"; value: "ZCC"} - ListElement { cryptoname: "ZedCoins"; value: "ZED"} - ListElement { cryptoname: "ZiftrCoin"; value: "ZRC*"} - ListElement { cryptoname: "Elektron"; value: "EKN"} - ListElement { cryptoname: "XauCoin"; value: "XAU"} - ListElement { cryptoname: "TimesCoin"; value: "TMC"} - ListElement { cryptoname: "BurstCoin"; value: "BURST"} - ListElement { cryptoname: "NuBits"; value: "NBT"} - ListElement { cryptoname: "StorjCoin"; value: "SJCX"} - ListElement { cryptoname: "StartCoin"; value: "START"} - ListElement { cryptoname: "BigCoin"; value: "HUGE"} - ListElement { cryptoname: "CounterParty"; value: "XCP"} - ListElement { cryptoname: "MaidSafe Coin"; value: "MAID"} - ListElement { cryptoname: "007 coin"; value: "7"} - ListElement { cryptoname: "NuShares"; value: "NSR"} - ListElement { cryptoname: "MonaCoin"; value: "MONA"} - ListElement { cryptoname: "SolarFarm"; value: "CELL"} - ListElement { cryptoname: "TekCoin"; value: "TEK"} - ListElement { cryptoname: "Positron"; value: "TRON"} - ListElement { cryptoname: "BitBay"; value: "BAY"} - ListElement { cryptoname: "Neutron"; value: "NTRN"} - ListElement { cryptoname: "Sling Coin"; value: "SLING"} - ListElement { cryptoname: "Vcash"; value: "XVC"} - ListElement { cryptoname: "CraveCoin"; value: "CRAVE"} - ListElement { cryptoname: "BlockNet"; value: "BLOCK"} - ListElement { cryptoname: "Stability Shares"; value: "XSI"} - ListElement { cryptoname: "ByteCent"; value: "BYC"} - ListElement { cryptoname: "GridCoin"; value: "GRC"} - ListElement { cryptoname: "Gemz Social"; value: "GEMZ"} - ListElement { cryptoname: "KryptCoin"; value: "KTK"} - ListElement { cryptoname: "Horizon"; value: "HZ"} - ListElement { cryptoname: "FairCoin"; value: "FAIR"} - ListElement { cryptoname: "QoraCoin"; value: "QORA"} - ListElement { cryptoname: "RubyCoin"; value: "RBY"} - ListElement { cryptoname: "Kore"; value: "KORE"} - ListElement { cryptoname: "Wild Beast Coin"; value: "WBB"} - ListElement { cryptoname: "Sonic Screw Driver Coin"; value: "SSD"} - ListElement { cryptoname: "TileCoin"; value: "XTC"} - ListElement { cryptoname: "Dnotes"; value: "NOTE"} - ListElement { cryptoname: "GridPay"; value: "GRID*"} - ListElement { cryptoname: "FlorinCoin"; value: "FLO"} - ListElement { cryptoname: "MaieutiCoin"; value: "MMXIV"} - ListElement { cryptoname: "8BIT Coin"; value: "8BIT"} - ListElement { cryptoname: "Sativa Coin"; value: "STV"} - ListElement { cryptoname: "EbolaShare"; value: "EBS"} - ListElement { cryptoname: "AeroMe"; value: "AM"} - ListElement { cryptoname: "Coin Magi"; value: "XMG"} - ListElement { cryptoname: "AmberCoin"; value: "AMBER"} - ListElement { cryptoname: "NakomotoDark"; value: "NKT"} - ListElement { cryptoname: "JoinCoin"; value: "J"} - ListElement { cryptoname: "GhostCoin"; value: "GHC"} - ListElement { cryptoname: "DayTrader Coin"; value: "DTC"} - ListElement { cryptoname: "ArtByte"; value: "ABY"} - ListElement { cryptoname: "LiteDoge"; value: "LDOGE"} - ListElement { cryptoname: "MasterTraderCoin"; value: "MTR"} - ListElement { cryptoname: "Triangles Coin"; value: "TRI"} - ListElement { cryptoname: "SwarmCoin"; value: "SWARM"} - ListElement { cryptoname: "Boolberry"; value: "BBR"} - ListElement { cryptoname: "BitCrystal"; value: "BTCRY"} - ListElement { cryptoname: "BitCredit"; value: "BCR"} - ListElement { cryptoname: "Pebble Coin"; value: "XPB"} - ListElement { cryptoname: "Dirac Coin"; value: "XDQ"} - ListElement { cryptoname: "Folding Coin"; value: "FLDC"} - ListElement { cryptoname: "SolarCoin"; value: "SLR"} - ListElement { cryptoname: "Social Media Coin"; value: "SMAC"} - ListElement { cryptoname: "TruckCoin"; value: "TRK"} - ListElement { cryptoname: "Ucoin"; value: "U"} - ListElement { cryptoname: "Unitus"; value: "UIS"} - ListElement { cryptoname: "CypherPunkCoin"; value: "CYP"} - ListElement { cryptoname: "UFO Coin"; value: "UFO"} - ListElement { cryptoname: "Ascension Coin"; value: "ASN"} - ListElement { cryptoname: "GSM Coin"; value: "GSM"} - ListElement { cryptoname: "NXTTY"; value: "NXTTY"} - ListElement { cryptoname: "QuBuck Coin"; value: "QBK"} - ListElement { cryptoname: "BlakeCoin"; value: "BLC"} - ListElement { cryptoname: "MaryJane Coin"; value: "MARYJ"} - ListElement { cryptoname: "OmniCron"; value: "OMC"} - ListElement { cryptoname: "GigCoin"; value: "GIG"} - ListElement { cryptoname: "CyberCoin"; value: "CC"} - ListElement { cryptoname: "BitstarCoin"; value: "BITS"} - ListElement { cryptoname: "LTBCoin"; value: "LTBC"} - ListElement { cryptoname: "NeosCoin"; value: "NEOS"} - ListElement { cryptoname: "HyperCoin"; value: "HYPER"} - ListElement { cryptoname: "Vtorrent"; value: "VTR"} - ListElement { cryptoname: "MetalCoin"; value: "METAL"} - ListElement { cryptoname: "PinkCoin"; value: "PINK"} - ListElement { cryptoname: "GreenCoin"; value: "GRE"} - ListElement { cryptoname: "XG Sports"; value: "XG"} - ListElement { cryptoname: "ChildCoin"; value: "CHILD"} - ListElement { cryptoname: "BOOM Coin"; value: "BOOM"} - ListElement { cryptoname: "Instamine Nuggets"; value: "MINE"} - ListElement { cryptoname: "ROS Coin"; value: "ROS"} - ListElement { cryptoname: "Unattanium"; value: "UNAT"} - ListElement { cryptoname: "SlimCoin"; value: "SLM"} - ListElement { cryptoname: "GAIA Platform"; value: "GAIA"} - ListElement { cryptoname: "TrustPlus"; value: "TRUST"} - ListElement { cryptoname: "FantomCoin "; value: "FCN"} - ListElement { cryptoname: "Cryptonite"; value: "XCN"} - ListElement { cryptoname: "Curecoin"; value: "CURE"} - ListElement { cryptoname: "Gridmaster"; value: "GMC"} - ListElement { cryptoname: "MemoryCoin"; value: "MMC"} - ListElement { cryptoname: "BitcoinPlus"; value: "XBC"} - ListElement { cryptoname: "ConSpiracy Coin "; value: "CYC"} - ListElement { cryptoname: "OctoCoin"; value: "OCTO"} - ListElement { cryptoname: "MasterCoin"; value: "MSC"} - ListElement { cryptoname: "EggCoin"; value: "EGG"} - ListElement { cryptoname: "Coin.2"; value: "C2"} - ListElement { cryptoname: "GlowShares"; value: "GSX"} - ListElement { cryptoname: "Camcoin"; value: "CAM"} - ListElement { cryptoname: "Ribbit Rewards"; value: "RBR"} - ListElement { cryptoname: "Quotient"; value: "XQN"} - ListElement { cryptoname: "ICASH"; value: "ICASH"} - ListElement { cryptoname: "Node"; value: "NODE"} - ListElement { cryptoname: "SoonCoin"; value: "SOON"} - ListElement { cryptoname: "BitMiles"; value: "BTMI"} - ListElement { cryptoname: "Event Token"; value: "EVENT"} - ListElement { cryptoname: "1Credit"; value: "1CR"} - ListElement { cryptoname: "ViorCoin"; value: "VIOR"} - ListElement { cryptoname: "XCoin"; value: "XCO"} - ListElement { cryptoname: "VirtualMining Coin"; value: "VMC"} - ListElement { cryptoname: "MarsCoin"; value: "MRS"} - ListElement { cryptoname: "Viral Coin"; value: "VIRAL"} - ListElement { cryptoname: "Equilibrium Coin"; value: "EQM"} - ListElement { cryptoname: "IslaCoin"; value: "ISL"} - ListElement { cryptoname: "Quicksilver coin"; value: "QSLV"} - ListElement { cryptoname: "World Trade Funds"; value: "XWT"} - ListElement { cryptoname: "DeOxyRibose"; value: "XNA"} - ListElement { cryptoname: "RadonPay"; value: "RDN"} - ListElement { cryptoname: "SkullBuzz"; value: "SKB"} - ListElement { cryptoname: "GlobalBoost"; value: "BSTY"} - ListElement { cryptoname: "CryptoFocus"; value: "FCS"} - ListElement { cryptoname: "Gambit coin"; value: "GAM"} - ListElement { cryptoname: "Nexus"; value: "NXS"} - ListElement { cryptoname: "Crypto Escudo"; value: "CESC"} - ListElement { cryptoname: "Twelve Coin"; value: "TWLV"} - ListElement { cryptoname: "EagsCoin"; value: "EAGS"} - ListElement { cryptoname: "MultiWallet Coin"; value: "MWC"} - ListElement { cryptoname: "AudioCoin"; value: "ADC"} - ListElement { cryptoname: "MarsCoin "; value: "MARS"} - ListElement { cryptoname: "Megastake"; value: "XMS"} - ListElement { cryptoname: "Sphere Coin"; value: "SPHR"} - ListElement { cryptoname: "Singular"; value: "SIGU"} - ListElement { cryptoname: "BitcoinTX"; value: "BTX*"} - ListElement { cryptoname: "DarkCrave"; value: "DCC"} - ListElement { cryptoname: "SupplyShock"; value: "M1"} - ListElement { cryptoname: "DarkBit"; value: "DB"} - ListElement { cryptoname: "Crypto"; value: "CTO"} - ListElement { cryptoname: "EdgeCoin"; value: "EDGE"} - ListElement { cryptoname: "BitLux"; value: "LUX*"} - ListElement { cryptoname: "FutCoin"; value: "FUTC"} - ListElement { cryptoname: "Global"; value: "GLOBE"} - ListElement { cryptoname: "TamaGucci"; value: "TAM"} - ListElement { cryptoname: "MorpheusCoin"; value: "MRP"} - ListElement { cryptoname: "Creva Coin"; value: "CREVA"} - ListElement { cryptoname: "Forever Coin"; value: "XFC"} - ListElement { cryptoname: "BananaBits"; value: "NANAS"} - ListElement { cryptoname: "Wood Coin"; value: "LOG"} - ListElement { cryptoname: "Cerium"; value: "XCE"} - ListElement { cryptoname: "Anarchists Prime"; value: "ACP"} - ListElement { cryptoname: "Droidz"; value: "DRZ"} - ListElement { cryptoname: "GorillaBucks"; value: "BUCKS*"} - ListElement { cryptoname: "BowsCoin"; value: "BSC"} - ListElement { cryptoname: "DarkTron"; value: "DRKT"} - ListElement { cryptoname: "CryptoCircuits"; value: "CIRC"} - ListElement { cryptoname: "IncaKoin"; value: "NKA"} - ListElement { cryptoname: "Versa Token"; value: "VERSA"} - ListElement { cryptoname: "Empyrean"; value: "EPY"} - ListElement { cryptoname: "Squall Coin"; value: "SQL"} - ListElement { cryptoname: "PolyBit"; value: "POLY"} - ListElement { cryptoname: "Piggy Coin"; value: "PIGGY"} - ListElement { cryptoname: "Charity Coin"; value: "CHA"} - ListElement { cryptoname: "Milllionaire Coin"; value: "MIL"} - ListElement { cryptoname: "Crown Coin"; value: "CRW"} - ListElement { cryptoname: "PharmaCoin"; value: "XPH"} - ListElement { cryptoname: "GridMaster"; value: "GRM"} - ListElement { cryptoname: "Quartz"; value: "QTZ"} - ListElement { cryptoname: "Arbit Coin"; value: "ARB"} - ListElement { cryptoname: "Litestar Coin"; value: "LTS"} - ListElement { cryptoname: "SpinCoin"; value: "SPC"} - ListElement { cryptoname: "GoldPieces"; value: "GP"} - ListElement { cryptoname: "Bitz Coin"; value: "BITZ"} - ListElement { cryptoname: "DubCoin"; value: "DUB"} - ListElement { cryptoname: "Graviton"; value: "GRAV"} - ListElement { cryptoname: "MonetaVerde"; value: "MCN"} - ListElement { cryptoname: "Quazar Coin"; value: "QCN"} - ListElement { cryptoname: "Hedgecoin"; value: "HEDG"} - ListElement { cryptoname: "Song Coin"; value: "SONG"} - ListElement { cryptoname: "BitSeeds"; value: "XSEED"} - ListElement { cryptoname: "Credits"; value: "CRE"} - ListElement { cryptoname: "Axiom Coin"; value: "AXIOM"} - ListElement { cryptoname: "SmileyCoin"; value: "SMLY"} - ListElement { cryptoname: "Rimbit"; value: "RBT"} - ListElement { cryptoname: "Chip"; value: "CHIP"} - ListElement { cryptoname: "SpecCoin"; value: "SPEC"} - ListElement { cryptoname: "UnCoin"; value: "UNC"} - ListElement { cryptoname: "Sprouts"; value: "SPRTS"} - ListElement { cryptoname: "BitZeny"; value: "ZNY"} - ListElement { cryptoname: "BitQuark"; value: "BTQ"} - ListElement { cryptoname: "ParkByte"; value: "PKB"} - ListElement { cryptoname: "StarCoin"; value: "STR*"} - ListElement { cryptoname: "Synergy"; value: "SNRG"} - ListElement { cryptoname: "Ghoul Coin"; value: "GHOUL"} - ListElement { cryptoname: "Hellenic Coin"; value: "HNC"} - ListElement { cryptoname: "Diggits"; value: "DIGS"} - ListElement { cryptoname: "Expanse"; value: "EXP"} - ListElement { cryptoname: "Global Currency Reserve"; value: "GCR"} - ListElement { cryptoname: "MapCoin"; value: "MAPC"} - ListElement { cryptoname: "XiaoMiCoin"; value: "MI"} - ListElement { cryptoname: "Paycon"; value: "CON_"} - ListElement { cryptoname: "NeuCoin"; value: "NEU*"} - ListElement { cryptoname: "Transfer"; value: "TX"} - ListElement { cryptoname: "Groestlcoin "; value: "GRS"} - ListElement { cryptoname: "CleverCoin"; value: "CLV"} - ListElement { cryptoname: "Factoids"; value: "FCT"} - ListElement { cryptoname: "LyraBar"; value: "LYB"} - ListElement { cryptoname: "BitStone"; value: "BST"} - ListElement { cryptoname: "Prime-X1"; value: "PXI"} - ListElement { cryptoname: "CapriCoin"; value: "CPC"} - ListElement { cryptoname: "Amsterdam Coin"; value: "AMS"} - ListElement { cryptoname: "Obits Coin"; value: "OBITS"} - ListElement { cryptoname: " ClubCoin"; value: "CLUB"} - ListElement { cryptoname: "Radium"; value: "RADS"} - ListElement { cryptoname: "BlitzCoin"; value: "BLITZ"} - ListElement { cryptoname: "BitHIRE"; value: "HIRE*"} - ListElement { cryptoname: "EverGreenCoin"; value: "EGC"} - ListElement { cryptoname: "MindCoin"; value: "MND"} - ListElement { cryptoname: "I0coin"; value: "I0C"} - ListElement { cryptoname: "Bata"; value: "BTA"} - ListElement { cryptoname: "Karmacoin"; value: "KARMA"} - ListElement { cryptoname: "Nas2Coin"; value: "NAS2"} - ListElement { cryptoname: "Pakcoin"; value: "PAK"} - ListElement { cryptoname: "Creditbit "; value: "CRB"} - ListElement { cryptoname: "DogeCoinDark"; value: "DOGED"} - ListElement { cryptoname: "Augur"; value: "REP"} - ListElement { cryptoname: "OKCash"; value: "OK"} - ListElement { cryptoname: "Synereo"; value: "AMP"} - ListElement { cryptoname: "HOdlcoin"; value: "HODL"} - ListElement { cryptoname: "Digix DAO"; value: "DGD"} - ListElement { cryptoname: "EDRCoin"; value: "EDRC"} - ListElement { cryptoname: "Hitcoin"; value: "HTC"} - ListElement { cryptoname: "Gamecredits"; value: "GAME"} - ListElement { cryptoname: "Dashcoin"; value: "DSH"} - ListElement { cryptoname: "DubaiCoin"; value: "DBIC"} - ListElement { cryptoname: "HiCoin"; value: "XHI"} - ListElement { cryptoname: "Spots"; value: "SPOTS"} - ListElement { cryptoname: "BiosCrypto"; value: "BIOS"} - ListElement { cryptoname: "CabbageUnit"; value: "CAB"} - ListElement { cryptoname: "CarpeDiemCoin"; value: "DIEM"} - ListElement { cryptoname: "GameBetCoin"; value: "GBT"} - ListElement { cryptoname: "RedCrowCoin"; value: "RCX"} - ListElement { cryptoname: "TrumpCoin"; value: "TRUMP"} - ListElement { cryptoname: "PrismChain"; value: "PRM"} - ListElement { cryptoname: "BitCrystals"; value: "BCY"} - ListElement { cryptoname: "Rubies"; value: "RBIES"} - ListElement { cryptoname: "Steem"; value: "STEEM"} - ListElement { cryptoname: "BillaryCoin"; value: "BLRY"} - ListElement { cryptoname: "WhiteCoin"; value: "XWC"} - ListElement { cryptoname: "Dotcoin"; value: "DOT"} - ListElement { cryptoname: "Scotcoin"; value: "SCOT"} - ListElement { cryptoname: "Darknet"; value: "DNET"} - ListElement { cryptoname: "BitalphaCoin"; value: "BAC"} - ListElement { cryptoname: "International Diamond Coin"; value: "XID*"} - ListElement { cryptoname: "Thecreed"; value: "TCR"} - ListElement { cryptoname: "PostCoin"; value: "POST"} - ListElement { cryptoname: "Influxcoin"; value: "INFX"} - ListElement { cryptoname: "EthereumScrypt"; value: "ETHS"} - ListElement { cryptoname: "Phalanx"; value: "PXL"} - ListElement { cryptoname: "NumbersCoin"; value: "NUM"} - ListElement { cryptoname: "SoulCoin"; value: "SOUL"} - ListElement { cryptoname: "Ionomy"; value: "ION"} - ListElement { cryptoname: "GrownCoin"; value: "GROW"} - ListElement { cryptoname: "SuperNET"; value: "UNITY"} - ListElement { cryptoname: "OldSafeCoin"; value: "OLDSF"} - ListElement { cryptoname: "SunShotCoin"; value: "SSTC"} - ListElement { cryptoname: "NetworkCoin"; value: "NETC"} - ListElement { cryptoname: "GPU Coin"; value: "GPU"} - ListElement { cryptoname: "Think And Get Rich Coin"; value: "TAGR"} - ListElement { cryptoname: "HempCoin"; value: "HMP"} - ListElement { cryptoname: "Adzcoin"; value: "ADZ"} - ListElement { cryptoname: "Gapcoin"; value: "GAP"} - ListElement { cryptoname: "MayaCoin"; value: "MYC"} - ListElement { cryptoname: "InvisibleCoin"; value: "IVZ"} - ListElement { cryptoname: "VirtaCoin"; value: "VTA"} - ListElement { cryptoname: "SaluS"; value: "SLS"} - ListElement { cryptoname: "SoilCoin"; value: "SOIL"} - ListElement { cryptoname: "DigiCube"; value: "CUBE"} - ListElement { cryptoname: "YoCoin"; value: "YOC"} - ListElement { cryptoname: "Coin"; value: "COIN*"} - ListElement { cryptoname: "AlpaCoin"; value: "APC"} - ListElement { cryptoname: "Steps"; value: "STEPS"} - ListElement { cryptoname: "DebitCoin"; value: "DBTC"} - ListElement { cryptoname: "Universal Currency"; value: "UNIT"} - ListElement { cryptoname: "MoinCoin"; value: "MOIN"} - ListElement { cryptoname: "SibCoin"; value: "SIB"} - ListElement { cryptoname: "EuropeCoin"; value: "ERC"} - ListElement { cryptoname: "AdvancedInternetBlock"; value: "AIB"} - ListElement { cryptoname: "PrimeChain"; value: "PRIME"} - ListElement { cryptoname: "BERNcash"; value: "BERN"} - ListElement { cryptoname: "BigUp"; value: "BIGUP"} - ListElement { cryptoname: "Krypton"; value: "KR"} - ListElement { cryptoname: "Pepe"; value: "MEME"} - ListElement { cryptoname: "DragonSphere"; value: "XDB"} - ListElement { cryptoname: "Anti Bitcoin"; value: "ANTI"} - ListElement { cryptoname: "BreakoutCoin"; value: "BRK"} - ListElement { cryptoname: "ColossusCoinXT"; value: "COLX"} - ListElement { cryptoname: "Mineum"; value: "MNM"} - ListElement { cryptoname: "Asiadigicoin"; value: "ADCN"} - ListElement { cryptoname: "ZeitCoin"; value: "ZEIT"} - ListElement { cryptoname: "2GiveCoin"; value: "2GIVE"} - ListElement { cryptoname: "Cryptographic Anomaly"; value: "CGA"} - ListElement { cryptoname: "SwingCoin"; value: "SWING"} - ListElement { cryptoname: "SafeExchangeCoin"; value: "SAFEX"} - ListElement { cryptoname: "Nebuchadnezzar"; value: "NEBU"} - ListElement { cryptoname: "AcesCoin"; value: "AEC"} - ListElement { cryptoname: "Francs"; value: "FRN"} - ListElement { cryptoname: "Aiden"; value: "ADN"} - ListElement { cryptoname: "Pulse"; value: "PULSE"} - ListElement { cryptoname: "Number7"; value: "N7"} - ListElement { cryptoname: "Cygnus"; value: "CYG"} - ListElement { cryptoname: "LGBTQoin"; value: "LGBTQ"} - ListElement { cryptoname: "Uther"; value: "UTH"} - ListElement { cryptoname: "MediumProject"; value: "MPRO"} - ListElement { cryptoname: "KATZcoin"; value: "KAT"} - ListElement { cryptoname: "Supreme"; value: "SPM"} - ListElement { cryptoname: "Mojocoin"; value: "MOJO"} - ListElement { cryptoname: "BelaCoin"; value: "BELA"} - ListElement { cryptoname: "Flash"; value: "FLX"} - ListElement { cryptoname: "BolivarCoin"; value: "BOLI"} - ListElement { cryptoname: "CludCoin"; value: "CLUD"} - ListElement { cryptoname: "DimeCoin"; value: "DIME"} - ListElement { cryptoname: "FlyCoin"; value: "FLY"} - ListElement { cryptoname: "High Voltage Coin"; value: "HVCO"} - ListElement { cryptoname: "GIZMOcoin"; value: "GIZ"} - ListElement { cryptoname: "GrexitCoin"; value: "GREXIT"} - ListElement { cryptoname: "DigiEuro"; value: "DEUR"} - ListElement { cryptoname: "Turron"; value: "TUR"} - ListElement { cryptoname: "LemonCoin"; value: "LEMON"} - ListElement { cryptoname: "STRESScoin"; value: "STS"} - ListElement { cryptoname: "Dark Lisk"; value: "DISK"} - ListElement { cryptoname: "NevaCoin"; value: "NEVA"} - ListElement { cryptoname: "Cryptokenz"; value: "CYT"} - ListElement { cryptoname: "Fuzzballs"; value: "FUZZ"} - ListElement { cryptoname: "Nukecoinz"; value: "NKC"} - ListElement { cryptoname: "SecretCoin"; value: "SCRT"} - ListElement { cryptoname: "Ratecoin"; value: "XRA"} - ListElement { cryptoname: "XanaxCoin"; value: "XNX"} - ListElement { cryptoname: "StarCoin"; value: "STAR*"} - ListElement { cryptoname: "Stakerush"; value: "STHR"} - ListElement { cryptoname: "Digital Bullion Gold"; value: "DBG"} - ListElement { cryptoname: "BonesCoin"; value: "BON*"} - ListElement { cryptoname: "WMCoin"; value: "WMC"} - ListElement { cryptoname: "GothicCoin"; value: "GOTX"} - ListElement { cryptoname: "FlavorCoin"; value: "FLVR"} - ListElement { cryptoname: "ShrekCoin"; value: "SHREK"} - ListElement { cryptoname: "Stakers"; value: "STA*"} - ListElement { cryptoname: "Rise"; value: "RISE"} - ListElement { cryptoname: "Revenu"; value: "REV"} - ListElement { cryptoname: "PabyosiCoin"; value: "PBC"} - ListElement { cryptoname: "Obscurebay"; value: "OBS"} - ListElement { cryptoname: "ExitCoin"; value: "EXIT"} - ListElement { cryptoname: "EducoinV"; value: "EDC"} - ListElement { cryptoname: "Clinton"; value: "CLINT"} - ListElement { cryptoname: "Clockcoin"; value: "CKC"} - ListElement { cryptoname: "VIP Tokens"; value: "VIP"} - ListElement { cryptoname: "NXEcoin"; value: "NXE"} - ListElement { cryptoname: "ZoomCoin"; value: "ZOOM"} - ListElement { cryptoname: "DT Token"; value: "DRACO"} - ListElement { cryptoname: "YobitVirtualCoin"; value: "YOVI"} - ListElement { cryptoname: "OrlyCoin"; value: "ORLY"} - ListElement { cryptoname: "KubosCoin"; value: "KUBO"} - ListElement { cryptoname: "InceptionCoin"; value: "INCP"} - ListElement { cryptoname: "SharkCoin"; value: "SAK"} - ListElement { cryptoname: "EvilCoin"; value: "EVIL"} - ListElement { cryptoname: "OmegaCoin"; value: "OMA"} - ListElement { cryptoname: "MonetaryUnit"; value: "MUE"} - ListElement { cryptoname: "CobraCoin"; value: "COX"} - ListElement { cryptoname: "Destiny"; value: "DES"} - ListElement { cryptoname: "16BitCoin"; value: "BIT16"} - ListElement { cryptoname: "Project Decorum"; value: "PDC"} - ListElement { cryptoname: "CometCoin"; value: "CMT"} - ListElement { cryptoname: "ChessCoin"; value: "CHESS"} - ListElement { cryptoname: "SpaceCoin"; value: "SPACE"} - ListElement { cryptoname: "ReeCoin"; value: "REE"} - ListElement { cryptoname: "Liquid"; value: "LQD"} - ListElement { cryptoname: "Marvelous"; value: "MARV"} - ListElement { cryptoname: "XDE II"; value: "XDE2"} - ListElement { cryptoname: "VectorCoin 2.0 "; value: "VEC2"} - ListElement { cryptoname: "Omni"; value: "OMNI"} - ListElement { cryptoname: "GenesysCoin"; value: "GSY"} - ListElement { cryptoname: "TrollTokens"; value: "TKN*"} - ListElement { cryptoname: "Let it Ride"; value: "LIR"} - ListElement { cryptoname: "MMNXT "; value: "MMNXT"} - ListElement { cryptoname: "ScryptCoin"; value: "SCRPT"} - ListElement { cryptoname: "LBRY Credits"; value: "LBC"} - ListElement { cryptoname: "CryptoJacks"; value: "CJ"} - ListElement { cryptoname: "PutinCoin"; value: "PUT"} - ListElement { cryptoname: "Kraken"; value: "KRAK"} - ListElement { cryptoname: "Dlisk"; value: "DLISK"} - ListElement { cryptoname: "iBankCoin"; value: "IBANK"} - ListElement { cryptoname: "Stratis"; value: "STRAT"} - ListElement { cryptoname: "Voyacoin"; value: "VOYA"} - ListElement { cryptoname: "EnterCoin (ENTER)"; value: "ENTER"} - ListElement { cryptoname: "World Gold Coin"; value: "WGC"} - ListElement { cryptoname: "BitMoon"; value: "BM"} - ListElement { cryptoname: "Frankywillcoin"; value: "FRWC"} - ListElement { cryptoname: "Psilocybin"; value: "PSY"} - ListElement { cryptoname: "ExtremeCoin"; value: "XT"} - ListElement { cryptoname: "RustCoin"; value: "RUST"} - ListElement { cryptoname: "NewZealandCoin"; value: "NZC"} - ListElement { cryptoname: "SingularDTV"; value: "SNGLS"} - ListElement { cryptoname: "Xaurum"; value: "XAUR"} - ListElement { cryptoname: "BitFinex Tokens"; value: "BFX"} - ListElement { cryptoname: "Uniqredit"; value: "UNIQ"} - ListElement { cryptoname: "ChronosCoin"; value: "CRX"} - ListElement { cryptoname: "Decent"; value: "DCT"} - ListElement { cryptoname: "PokeChain"; value: "XPOKE"} - ListElement { cryptoname: "WarpCoin"; value: "WARP"} - ListElement { cryptoname: "Coinomat"; value: "CNMT"} - ListElement { cryptoname: "PizzaCoin"; value: "PIZZA"} - ListElement { cryptoname: "Lutetium Coin"; value: "LC"} - ListElement { cryptoname: "Heat Ledger"; value: "HEAT"} - ListElement { cryptoname: "Iconomi"; value: "ICN"} - ListElement { cryptoname: "ExaByte (EXB)"; value: "EXB"} - ListElement { cryptoname: "Wings DAO"; value: "WINGS"} - ListElement { cryptoname: "Cryptodex"; value: "CDX*"} - ListElement { cryptoname: "ReturnBit"; value: "RBIT"} - ListElement { cryptoname: "deCLOUDs"; value: "DCS"} - ListElement { cryptoname: "Komodo"; value: "KMD"} - ListElement { cryptoname: "GoldBlocks"; value: "GB"} - ListElement { cryptoname: "Anoncoin"; value: "ANC"} - ListElement { cryptoname: "Syndicate"; value: "SYNX"} - ListElement { cryptoname: "Mass Coin"; value: "MC"} - ListElement { cryptoname: "E-Dinar Coin"; value: "EDR"} - ListElement { cryptoname: "Jewels"; value: "JWL"} - ListElement { cryptoname: "WayCoin"; value: "WAY"} - ListElement { cryptoname: "MollyCoin"; value: "TAB"} - ListElement { cryptoname: "Trigger"; value: "TRIG"} - ListElement { cryptoname: "bitCNY"; value: "BITCNY"} - ListElement { cryptoname: "Autumncoin"; value: "ATM*"} - ListElement { cryptoname: "Save The Ocean"; value: "STO"} - ListElement { cryptoname: "Sense"; value: "SNS"} - ListElement { cryptoname: "Fusion"; value: "FSN"} - ListElement { cryptoname: "CarterCoin"; value: "CTC"} - ListElement { cryptoname: "TotCoin"; value: "TOT"} - ListElement { cryptoname: "Bitcloud"; value: "BTD"} - ListElement { cryptoname: "ArkDAO"; value: "BOTS"} - ListElement { cryptoname: "MedicCoin"; value: "MDC"} - ListElement { cryptoname: "FuturePoints"; value: "FTP"} - ListElement { cryptoname: "Zeta2Coin"; value: "ZET2"} - ListElement { cryptoname: "CovenCoin"; value: "COV*"} - ListElement { cryptoname: "Karbo"; value: "KRB"} - ListElement { cryptoname: "Tellurion"; value: "TELL"} - ListElement { cryptoname: "EneCoin"; value: "ENE"} - ListElement { cryptoname: "TDFB"; value: "TDFB"} - ListElement { cryptoname: "BlockPay"; value: "BLOCKPAY"} - ListElement { cryptoname: "BitTokens"; value: "BXT"} - ListElement { cryptoname: "MustangCoin"; value: "MST"} - ListElement { cryptoname: "Goonies"; value: "GOON"} - ListElement { cryptoname: "Veltor"; value: "VLT"} - ListElement { cryptoname: "ZoneCoin"; value: "ZNE"} - ListElement { cryptoname: "DickCoin"; value: "DCK"} - ListElement { cryptoname: "Circuits of Value"; value: "COVAL"} - ListElement { cryptoname: "DarkGold"; value: "DGDC"} - ListElement { cryptoname: "TodayCoin"; value: "TODAY"} - ListElement { cryptoname: "Verium"; value: "VRM"} - ListElement { cryptoname: "RootCoin"; value: "ROOT"} - ListElement { cryptoname: "FirstBlood"; value: "1ST"} - ListElement { cryptoname: "Gold Pressed Latinum"; value: "GPL"} - ListElement { cryptoname: "DopeCoin"; value: "DOPE"} - ListElement { cryptoname: "B3 Coin"; value: "B3"} - ListElement { cryptoname: "FCoin"; value: "FX"} - ListElement { cryptoname: "Pioneershares"; value: "PIO"} - ListElement { cryptoname: "Samsara Coin"; value: "SMSR"} - ListElement { cryptoname: "Ubiqoin"; value: "UBIQ"} - ListElement { cryptoname: "Armory Coin"; value: "ARM"} - ListElement { cryptoname: "RingCoin"; value: "RING"} - ListElement { cryptoname: "ERBCoin"; value: "ERB"} - ListElement { cryptoname: "Lazarus"; value: "LAZ"} - ListElement { cryptoname: "FonzieCoin"; value: "FONZ"} - ListElement { cryptoname: "BitCurrency"; value: "BTCR"} - ListElement { cryptoname: "Save and Gain"; value: "SANDG"} - ListElement { cryptoname: "SteamPunk"; value: "PNK"} - ListElement { cryptoname: "Dark Moon"; value: "MOOND"} - ListElement { cryptoname: "DollarCoin"; value: "DLC"} - ListElement { cryptoname: "Sentaro"; value: "SEN"} - ListElement { cryptoname: "Swiscoin"; value: "SCN"} - ListElement { cryptoname: "Wexcoin"; value: "WEX"} - ListElement { cryptoname: "Lathaan"; value: "LTH"} - ListElement { cryptoname: "BitBronze"; value: "BRONZ"} - ListElement { cryptoname: "Shilling"; value: "SH"} - ListElement { cryptoname: "Mind Gene"; value: "MG"} - ListElement { cryptoname: "PSIcoin"; value: "PSI"} - ListElement { cryptoname: "Opair"; value: "XPO"} - ListElement { cryptoname: "NoLimitCoin"; value: "NLC"} - ListElement { cryptoname: "PesoBit"; value: "PSB"} - ListElement { cryptoname: "Beats"; value: "XBTS"} - ListElement { cryptoname: "Fitcoin"; value: "FIT"} - ListElement { cryptoname: "PantherCoin"; value: "PINKX"} - ListElement { cryptoname: "FireCoin"; value: "FIRE"} - ListElement { cryptoname: "Unfed Coin"; value: "UNF"} - ListElement { cryptoname: "SportsCoin"; value: "SPORT"} - ListElement { cryptoname: "Peerplays"; value: "PPY"} - ListElement { cryptoname: "NineElevenTruthCoin"; value: "NTC"} - ListElement { cryptoname: "EGOcoin"; value: "EGO"} - ListElement { cryptoname: "BitluckCoin"; value: "BTCL*"} - ListElement { cryptoname: "RCoin"; value: "RCN*"} - ListElement { cryptoname: "X2Coin"; value: "X2"} - ListElement { cryptoname: "Mycelium Token"; value: "MT"} - ListElement { cryptoname: "Tianhe"; value: "TIA"} - ListElement { cryptoname: "GBR Coin"; value: "GBRC"} - ListElement { cryptoname: "UPcoin"; value: "XUP"} - ListElement { cryptoname: "Halloween Coin"; value: "HALLO"} - ListElement { cryptoname: "BaseballCardCoin"; value: "BBCC"} - ListElement { cryptoname: "EmiratesGoldCoin"; value: "EMIGR"} - ListElement { cryptoname: "BighanCoin"; value: "BHC"} - ListElement { cryptoname: "Craftcoin"; value: "CRAFT"} - ListElement { cryptoname: "Invictus"; value: "INV"} - ListElement { cryptoname: "OlympCoin"; value: "OLYMP"} - ListElement { cryptoname: "DelightPay"; value: "DPAY"} - ListElement { cryptoname: "Atomic Coin"; value: "ATOM"} - ListElement { cryptoname: "Hacker Gold"; value: "HKG"} - ListElement { cryptoname: "AntiLitecoin"; value: "ANTC"} - ListElement { cryptoname: "JobsCoin"; value: "JOBS"} - ListElement { cryptoname: "DogeGoreCoin"; value: "DGORE"} - ListElement { cryptoname: "The Hempcoin"; value: "THC"} - ListElement { cryptoname: "Tetra"; value: "TRA"} - ListElement { cryptoname: "Resumeo Shares"; value: "RMS"} - ListElement { cryptoname: "FujiCoin"; value: "FJC"} - ListElement { cryptoname: "Vaporcoin"; value: "VAPOR"} - ListElement { cryptoname: "SydPakCoin"; value: "SDP"} - ListElement { cryptoname: "Recovery Right Tokens"; value: "RRT"} - ListElement { cryptoname: "Premium"; value: "PRE"} - ListElement { cryptoname: "CaliphCoin"; value: "CALC"} - ListElement { cryptoname: "LeaCoin"; value: "LEA"} - ListElement { cryptoname: "Californium"; value: "CF"} - ListElement { cryptoname: "CrankCoin"; value: "CRNK"} - ListElement { cryptoname: "CoffeeCoin"; value: "CFC"} - ListElement { cryptoname: "Victoriouscoin"; value: "VTY"} - ListElement { cryptoname: "Safecoin"; value: "SFE"} - ListElement { cryptoname: "Ardor"; value: "ARDR"} - ListElement { cryptoname: "BlackShadowCoin"; value: "BS"} - ListElement { cryptoname: "JiffyCoin"; value: "JIF"} - ListElement { cryptoname: "CrabCoin"; value: "CRAB"} - ListElement { cryptoname: "Aircoin"; value: "AIR*"} - ListElement { cryptoname: "President Clinton"; value: "HILL"} - ListElement { cryptoname: "ForexCoin"; value: "FOREX"} - ListElement { cryptoname: "Moneta"; value: "MONETA"} - ListElement { cryptoname: "Eclipse"; value: "EC"} - ListElement { cryptoname: "Rublebit"; value: "RUBIT"} - ListElement { cryptoname: "HappyCreatorCoin "; value: "HCC"} - ListElement { cryptoname: "BrainCoin"; value: "BRAIN"} - ListElement { cryptoname: "Vertex"; value: "VTX"} - ListElement { cryptoname: "KRCoin"; value: "KRC"} - ListElement { cryptoname: "BigLifeCoin"; value: "LFC"} - ListElement { cryptoname: "Zurcoin"; value: "ZUR"} - ListElement { cryptoname: "NubisCoin"; value: "NUBIS"} - ListElement { cryptoname: "Tennet"; value: "TENNET"} - ListElement { cryptoname: "PeaceCoin"; value: "PEC"} - ListElement { cryptoname: "Goldmaxcoin"; value: "GMX"} - ListElement { cryptoname: "32Bitcoin"; value: "32BIT"} - ListElement { cryptoname: "GanjaCoin V2"; value: "GNJ"} - ListElement { cryptoname: "TeamUP"; value: "TEAM"} - ListElement { cryptoname: "ScryptToken"; value: "SCT"} - ListElement { cryptoname: "LanaCoin"; value: "LANA"} - ListElement { cryptoname: "Elementrem"; value: "ELE"} - ListElement { cryptoname: "GuccioneCoin"; value: "GCC"} - ListElement { cryptoname: "AndromedaCoin"; value: "AND"} - ListElement { cryptoname: "Byteball"; value: "GBYTE"} - ListElement { cryptoname: "EqualCoin"; value: "EQUAL"} - ListElement { cryptoname: "SweetStake"; value: "SWEET"} - ListElement { cryptoname: "2BACCO Coin"; value: "2BACCO"} - ListElement { cryptoname: "DarkKnightCoin"; value: "DKC"} - ListElement { cryptoname: "Community Coin"; value: "COC"} - ListElement { cryptoname: "ChoofCoin"; value: "CHOOF"} - ListElement { cryptoname: "CashOut"; value: "CSH"} - ListElement { cryptoname: "ZClassic"; value: "ZCL"} - ListElement { cryptoname: "RoyalCoin 2.0"; value: "RYCN"} - ListElement { cryptoname: "Pabyosi Coin"; value: "PCS"} - ListElement { cryptoname: "NetBit"; value: "NBIT"} - ListElement { cryptoname: "WineCoin"; value: "WINE"} - ListElement { cryptoname: "Darcrus"; value: "DAR"} - ListElement { cryptoname: "ARK"; value: "ARK"} - ListElement { cryptoname: "InflationCoin"; value: "IFLT"} - ListElement { cryptoname: "ZCashDarkCoin"; value: "ZECD"} - ListElement { cryptoname: "Zcrypt"; value: "ZXT"} - ListElement { cryptoname: "WashingtonCoin"; value: "WASH"} - ListElement { cryptoname: "TeslaCoilCoin"; value: "TESLA"} - ListElement { cryptoname: "vSlice"; value: "VSL"} - ListElement { cryptoname: "Troll Payment"; value: "TPG"} - ListElement { cryptoname: "LEOcoin"; value: "LEO"} - ListElement { cryptoname: "Midnight"; value: "MDT"} - ListElement { cryptoname: "CBD Crystals"; value: "CBD"} - ListElement { cryptoname: "PosEx"; value: "PEX"} - ListElement { cryptoname: "InsaneCoin"; value: "INSANE"} - ListElement { cryptoname: "LuckChain"; value: "BASH"} - ListElement { cryptoname: "FameCoin"; value: "FAME"} - ListElement { cryptoname: "LiviaCoin"; value: "LIV"} - ListElement { cryptoname: "Sex Pistols"; value: "SP"} - ListElement { cryptoname: "MegaFlash"; value: "MEGA"} - ListElement { cryptoname: "Veros"; value: "VRS"} - ListElement { cryptoname: "Arab League Coin"; value: "ALC"} - ListElement { cryptoname: "EtherDoge"; value: "DOGETH"} - ListElement { cryptoname: "KiloCoin"; value: "KLC"} - ListElement { cryptoname: "Hush"; value: "HUSH"} - ListElement { cryptoname: "BitLuckCoin"; value: "BTLC"} - ListElement { cryptoname: "Dream8Coin"; value: "DRM8"} - ListElement { cryptoname: "FistBump"; value: "FIST"} - ListElement { cryptoname: "Ebitz"; value: "EBZ"} - ListElement { cryptoname: "Digital Rupees"; value: "DRS"} - ListElement { cryptoname: "Free Game Zone"; value: "FGZ"} - ListElement { cryptoname: "BosonCoin"; value: "BOSON"} - ListElement { cryptoname: "ArtexCoin"; value: "ATX"} - ListElement { cryptoname: "PlatiniumCoin"; value: "PNC"} - ListElement { cryptoname: "BeardDollars"; value: "BRDD"} - ListElement { cryptoname: "Time"; value: "TIME"} - ListElement { cryptoname: "BipCoin"; value: "BIP"} - ListElement { cryptoname: "XenCoin"; value: "XNC"} - ListElement { cryptoname: "EmberCoin"; value: "EMB"} - ListElement { cryptoname: "Coin to the Future"; value: "BTTF"} - ListElement { cryptoname: "DollarOnline"; value: "DLR"} - ListElement { cryptoname: "Cosmic"; value: "CSMIC"} - ListElement { cryptoname: "FirstCoin"; value: "FIRST"} - ListElement { cryptoname: "SpaceCash"; value: "SCASH"} - ListElement { cryptoname: "XenixCoin"; value: "XEN"} - ListElement { cryptoname: "JIO Token"; value: "JIO"} - ListElement { cryptoname: "iWallet"; value: "IW"} - ListElement { cryptoname: "Janus"; value: "JNS"} - ListElement { cryptoname: "TrickyCoin"; value: "TRICK"} - ListElement { cryptoname: "DeltaCredits"; value: "DCRE"} - ListElement { cryptoname: "FreeCoin"; value: "FRE"} - ListElement { cryptoname: "PLNCoin"; value: "PLNC"} - ListElement { cryptoname: "Digigems"; value: "DGMS"} - ListElement { cryptoname: "Icobid"; value: "ICOB"} - ListElement { cryptoname: "AquariusCoin"; value: "ARCO"} - ListElement { cryptoname: "Kurrent"; value: "KURT"} - ListElement { cryptoname: "Creatio"; value: "XCRE"} - ListElement { cryptoname: "Eternity"; value: "ENT"} - ListElement { cryptoname: "UR"; value: "UR"} - ListElement { cryptoname: "Metal Music v3"; value: "MTLM3"} - ListElement { cryptoname: "Old Dogs New Tricks"; value: "ODNT"} - ListElement { cryptoname: "Eurocoin"; value: "EUC"} - ListElement { cryptoname: "CoolDarkCoin"; value: "CCX"} - ListElement { cryptoname: "BitcoinFast"; value: "BCF"} - ListElement { cryptoname: "SeedShares"; value: "SEEDS"} - ListElement { cryptoname: "Tokes"; value: "TKS"} - ListElement { cryptoname: "BitConnect Coin"; value: "BCCOIN"} - ListElement { cryptoname: "ShortyCoin"; value: "SHORTY"} - ListElement { cryptoname: "Procom"; value: "PCM"} - ListElement { cryptoname: "Kernalcoin"; value: "KC"} - ListElement { cryptoname: "CoralPay"; value: "CORAL"} - ListElement { cryptoname: "BAM"; value: "BAM"} - ListElement { cryptoname: "Nexium"; value: "NXC"} - ListElement { cryptoname: "MoneyCoin"; value: "MONEY"} - ListElement { cryptoname: "Blackstar"; value: "BSTAR"} - ListElement { cryptoname: "Horse Power"; value: "HSP"} - ListElement { cryptoname: "HazMatCoin"; value: "HZT"} - ListElement { cryptoname: "PoolStamp"; value: "XSP"} - ListElement { cryptoname: "BullshitCoin"; value: "BULLS"} - ListElement { cryptoname: "Incent"; value: "INCNT"} - ListElement { cryptoname: "Iconic"; value: "ICON"} - ListElement { cryptoname: "NewInvestCoin"; value: "NIC"} - ListElement { cryptoname: "AvonCoin"; value: "ACN"} - ListElement { cryptoname: "Enigma"; value: "XNG"} - ListElement { cryptoname: "Cannabis Industry Coin"; value: "XCI"} - ListElement { cryptoname: "LookCoin"; value: "LOOK"} - ListElement { cryptoname: "MMXVI"; value: "MMXVI"} - ListElement { cryptoname: "TrustCoin"; value: "TRST"} - ListElement { cryptoname: "MIScoin"; value: "MIS"} - ListElement { cryptoname: "WorldPay"; value: "WOP"} - ListElement { cryptoname: "ConquestCoin"; value: "CQST"} - ListElement { cryptoname: "Impulse Coin"; value: "IMPS"} - ListElement { cryptoname: "InCoin"; value: "IN"} - ListElement { cryptoname: "TheChiefCoin"; value: "CHIEF"} - ListElement { cryptoname: "Goat"; value: "GOAT"} - ListElement { cryptoname: "AnalCoin"; value: "ANAL"} - ListElement { cryptoname: "Russiacoin"; value: "RC"} - ListElement { cryptoname: "PandaCoin"; value: "PND"} - ListElement { cryptoname: "PXcoin"; value: "PX"} - ListElement { cryptoname: "Canada eCoin"; value: "CND*"} - ListElement { cryptoname: "OptionCoin"; value: "OPTION"} - ListElement { cryptoname: "Avatar Coin"; value: "AV"} - ListElement { cryptoname: "Limited Coin"; value: "LTD"} - ListElement { cryptoname: "GameUnits"; value: "UNITS"} - ListElement { cryptoname: "HeelCoin"; value: "HEEL"} - ListElement { cryptoname: "GAKHcoin"; value: "GAKH"} - ListElement { cryptoname: "Shift"; value: "SHIFT"} - ListElement { cryptoname: "S88 Coin"; value: "S8C"} - ListElement { cryptoname: "Leverage Coin"; value: "LVG"} - ListElement { cryptoname: "DraculaCoin"; value: "DRA"} - ListElement { cryptoname: "Allsafe"; value: "ASAFE2"} - ListElement { cryptoname: "LiteCreed"; value: "LTCR"} - ListElement { cryptoname: "Quebecoin"; value: "QBC"} - ListElement { cryptoname: "ProCoin"; value: "XPRO"} - ListElement { cryptoname: "Astral"; value: "AST*"} - ListElement { cryptoname: "GiftNet"; value: "GIFT"} - ListElement { cryptoname: "PureVidz"; value: "VIDZ"} - ListElement { cryptoname: "Incrementum"; value: "INC"} - ListElement { cryptoname: "PentaCoin"; value: "PTA"} - ListElement { cryptoname: "AcidCoin"; value: "ACID"} - ListElement { cryptoname: "ZLiteQubit"; value: "ZLQ"} - ListElement { cryptoname: "RadicalCoin"; value: "RADI"} - ListElement { cryptoname: "ReturnCoin"; value: "RNC"} - ListElement { cryptoname: "Golos"; value: "GOLOS"} - ListElement { cryptoname: "Pascal Coin"; value: "PASC"} - ListElement { cryptoname: "TwisterCoin"; value: "TWIST"} - ListElement { cryptoname: "PayPeer"; value: "PAYP"} - ListElement { cryptoname: "DarkEther"; value: "DETH"} - ListElement { cryptoname: "YAYcoin"; value: "YAY"} - ListElement { cryptoname: "YesCoin"; value: "YES"} - ListElement { cryptoname: "LeninCoin"; value: "LENIN"} - ListElement { cryptoname: "MrsaCoin"; value: "MRSA"} - ListElement { cryptoname: "OsmiumCoin"; value: "OS76"} - ListElement { cryptoname: "BitBoss"; value: "BOSS"} - ListElement { cryptoname: "Maker"; value: "MKR"} - ListElement { cryptoname: "Bikercoins"; value: "BIC"} - ListElement { cryptoname: "CryptoPennies"; value: "CRPS"} - ListElement { cryptoname: "Motocoin"; value: "MOTO"} - ListElement { cryptoname: "NeptuneClassic"; value: "NTCC"} - ListElement { cryptoname: "Numismatic Collections"; value: "XNC*"} - ListElement { cryptoname: "HexxCoin"; value: "HXX"} - ListElement { cryptoname: "Ghost Coin"; value: "SPKTR"} - ListElement { cryptoname: "SelenCoin"; value: "SEL"} - ListElement { cryptoname: "Noocoin"; value: "NOO"} - ListElement { cryptoname: "23 Skidoo"; value: "CHAO"} - ListElement { cryptoname: "GoldenBird"; value: "XGB"} - ListElement { cryptoname: "YamahaCoin"; value: "YMC"} - ListElement { cryptoname: "JokerCoin"; value: "JOK"} - ListElement { cryptoname: "GravityBit"; value: "GBIT"} - ListElement { cryptoname: "TeCoin"; value: "TEC"} - ListElement { cryptoname: "BombCoin"; value: "BOMB"} - ListElement { cryptoname: "Ride My Car"; value: "RIDE"} - ListElement { cryptoname: "Private Instant Verified Transaction"; value: "PIVX"} - ListElement { cryptoname: "Klingon Empire Darsek"; value: "KED"} - ListElement { cryptoname: "Coino"; value: "CNO"} - ListElement { cryptoname: "WealthCoin"; value: "WEALTH"} - ListElement { cryptoname: "Spectre"; value: "XSPEC"} - ListElement { cryptoname: "Pepe Cash"; value: "PEPECASH"} - ListElement { cryptoname: "Clickcoin"; value: "CLICK"} - ListElement { cryptoname: "Elysium"; value: "ELS"} - ListElement { cryptoname: "KushCoin"; value: "KUSH"} - ListElement { cryptoname: "Eryllium"; value: "ERY"} - ListElement { cryptoname: "President Trump"; value: "PRES"} - ListElement { cryptoname: "BitzCoin"; value: "BTZ"} - ListElement { cryptoname: "Opes"; value: "OPES"} - ListElement { cryptoname: "Waves Community Token"; value: "WCT"} - ListElement { cryptoname: "Ubiq"; value: "UBQ"} - ListElement { cryptoname: "Ratio"; value: "RATIO"} - ListElement { cryptoname: "Babes and Nerds"; value: "BAN"} - ListElement { cryptoname: "NiceCoin"; value: "NICE"} - ListElement { cryptoname: "SmurfCoin"; value: "SMF"} - ListElement { cryptoname: "CryptoWorldXToken"; value: "CWXT"} - ListElement { cryptoname: "TechCoin"; value: "TECH"} - ListElement { cryptoname: "CircuitCoin"; value: "CIR"} - ListElement { cryptoname: "LePenCoin"; value: "LEPEN"} - ListElement { cryptoname: "RoundCoin"; value: "ROUND"} - ListElement { cryptoname: "MarijuanaCoin"; value: "MAR"} - ListElement { cryptoname: "MarxCoin"; value: "MARX"} - ListElement { cryptoname: "Tatiana Coin"; value: "TAT"} - ListElement { cryptoname: "HazeCoin"; value: "HAZE"} - ListElement { cryptoname: "Printerium"; value: "PRX"} - ListElement { cryptoname: "Neurocoin"; value: "NRC"} - ListElement { cryptoname: "Impeach"; value: "IMPCH"} - ListElement { cryptoname: "ErrorCoin"; value: "ERR"} - ListElement { cryptoname: "TrueInvestmentCoin"; value: "TIC"} - ListElement { cryptoname: "NukeCoin"; value: "NUKE"} - ListElement { cryptoname: "EveryonesCoin"; value: "EOC"} - ListElement { cryptoname: "Solarflarecoin"; value: "SFC"} - ListElement { cryptoname: "JaneCoin"; value: "JANE"} - ListElement { cryptoname: "ParanoiaCoin"; value: "PARA"} - ListElement { cryptoname: "MasterMint"; value: "MM"} - ListElement { cryptoname: "Bitcedi"; value: "BXC"} - ListElement { cryptoname: "NinjaDoge"; value: "NDOGE"} - ListElement { cryptoname: "Zilbercoin"; value: "ZBC"} - ListElement { cryptoname: "Melon"; value: "MLN"} - ListElement { cryptoname: "FirstCoin"; value: "FRST"} - ListElement { cryptoname: "TenX"; value: "PAY"} - ListElement { cryptoname: "OroCoin"; value: "ORO"} - ListElement { cryptoname: "Alexandrite"; value: "ALEX"} - ListElement { cryptoname: "TrashBurn"; value: "TBCX"} - ListElement { cryptoname: "MasterCar"; value: "MCAR"} - ListElement { cryptoname: "TechShares"; value: "THS"} - ListElement { cryptoname: "AcesCoin"; value: "ACES"} - ListElement { cryptoname: "United Arab Emirates Coin"; value: "UAEC"} - ListElement { cryptoname: "EagleCoin"; value: "EA"} - ListElement { cryptoname: "Persistent Information Exchange"; value: "PIE"} - ListElement { cryptoname: "CreativeChain"; value: "CREA"} - ListElement { cryptoname: "WisdomCoin"; value: "WISC"} - ListElement { cryptoname: "BeaverCoin"; value: "BVC"} - ListElement { cryptoname: "FindCoin"; value: "FIND"} - ListElement { cryptoname: "MeLite"; value: "MLITE"} - ListElement { cryptoname: "StalinCoin"; value: "STALIN"} - ListElement { cryptoname: "TattooCoin"; value: "TSE"} - ListElement { cryptoname: "VaultCoin"; value: "VLTC"} - ListElement { cryptoname: "BioBar"; value: "BIOB"} - ListElement { cryptoname: "Swarm City Token"; value: "SWT"} - ListElement { cryptoname: "Pascal Lite"; value: "PASL"} - ListElement { cryptoname: "ChatCoin"; value: "CHAT"} - ListElement { cryptoname: "Canada eCoin"; value: "CDN"} - ListElement { cryptoname: "TrollPlay"; value: "TPAY"} - ListElement { cryptoname: "Netko"; value: "NETKO"} - ListElement { cryptoname: "Honey"; value: "HONEY"} - ListElement { cryptoname: "MartexCoin"; value: "MXT"} - ListElement { cryptoname: "Musicoin"; value: "MUSIC"} - ListElement { cryptoname: "Databits"; value: "DTB"} - ListElement { cryptoname: "BitVegan"; value: "VEG"} - ListElement { cryptoname: "Mbitbooks"; value: "MBIT"} - ListElement { cryptoname: "BitVolt"; value: "VOLT"} - ListElement { cryptoname: "MobileGo"; value: "MGO"} - ListElement { cryptoname: "Edgeless"; value: "EDG"} - ListElement { cryptoname: "BankCoin"; value: "B@"} - ListElement { cryptoname: "BestChain"; value: "BEST"} - ListElement { cryptoname: "ChainCoin"; value: "CHC"} - ListElement { cryptoname: "Zennies"; value: "ZENI"} - ListElement { cryptoname: "PlanetCoin"; value: "PLANET"} - ListElement { cryptoname: "DuckDuckCoin"; value: "DUCK"} - ListElement { cryptoname: "BnrtxCoin"; value: "BNX"} - ListElement { cryptoname: "BattleStake"; value: "BSTK"} - ListElement { cryptoname: "RenosCoin"; value: "RNS"} - ListElement { cryptoname: "DubaiCoin"; value: "DBIX"} - ListElement { cryptoname: "AMIS"; value: "AMIS"} - ListElement { cryptoname: "Kayı"; value: "KAYI"} - ListElement { cryptoname: "VirtacoinPlus"; value: "XVP"} - ListElement { cryptoname: "Doubloon"; value: "BOAT"} - ListElement { cryptoname: "TajCoin"; value: "TAJ"} - ListElement { cryptoname: "Impact"; value: "IMX"} - ListElement { cryptoname: "CryptoJournal"; value: "CJC"} - ListElement { cryptoname: "Amygws"; value: "AMY"} - ListElement { cryptoname: "Cubits"; value: "QBT"} - ListElement { cryptoname: "StarCredits"; value: "SRC*"} - ListElement { cryptoname: "EB3coin"; value: "EB3"} - ListElement { cryptoname: "The Vegan Initiative"; value: "XVE"} - ListElement { cryptoname: "FazzCoin"; value: "FAZZ"} - ListElement { cryptoname: "Aptcoin"; value: "APT"} - ListElement { cryptoname: "BlazerCoin"; value: "BLAZR"} - ListElement { cryptoname: "ArpaCoin"; value: "ARPA"} - ListElement { cryptoname: "Boats and Bitches"; value: "BNB*"} - ListElement { cryptoname: "Universe"; value: "UNI"} - ListElement { cryptoname: "ECOcoin"; value: "ECO"} - ListElement { cryptoname: "Solaris"; value: "XLR"} - ListElement { cryptoname: "Dark"; value: "DARK"} - ListElement { cryptoname: "DonationCoin"; value: "DON"} - ListElement { cryptoname: "Mercury"; value: "MER"} - ListElement { cryptoname: "WavesGO"; value: "WGO"} - ListElement { cryptoname: "iEx.ec"; value: "RLC"} - ListElement { cryptoname: "InPay"; value: "INPAY"} - ListElement { cryptoname: "EncryptoTel"; value: "ETT"} - ListElement { cryptoname: "wBTC"; value: "WBTC*"} - ListElement { cryptoname: "Visio"; value: "VISIO"} - ListElement { cryptoname: "HappyCoin"; value: "HPC"} - ListElement { cryptoname: "Giotto Coin"; value: "GOT"} - ListElement { cryptoname: "Coinonat"; value: "CXT"} - ListElement { cryptoname: "EmporiumCoin"; value: "EMPC"} - ListElement { cryptoname: "Gnosis"; value: "GNO"} - ListElement { cryptoname: "Legends Cryptocurrency"; value: "LGD"} - ListElement { cryptoname: "Token as a Service"; value: "TAAS"} - ListElement { cryptoname: "SwagBucks"; value: "BUCKS"} - ListElement { cryptoname: "XtraBYtes"; value: "XBY"} - ListElement { cryptoname: "Guppy"; value: "GUP"} - ListElement { cryptoname: "Lunyr"; value: "LUN"} - ListElement { cryptoname: "Condensate"; value: "RAIN"} - ListElement { cryptoname: "WeAreSatoshi"; value: "WSX"} - ListElement { cryptoname: "IvugeoEvolutionCoin"; value: "IEC"} - ListElement { cryptoname: "Independent Money System"; value: "IMS"} - ListElement { cryptoname: "ArgusCoin"; value: "ARGUS"} - ListElement { cryptoname: "Centurion"; value: "CNT"} - ListElement { cryptoname: "LomoCoin"; value: "LMC"} - ListElement { cryptoname: "TokenCard "; value: "TKN"} - ListElement { cryptoname: "ProCurrency"; value: "PROC"} - ListElement { cryptoname: "GoldReserve"; value: "XGR"} - ListElement { cryptoname: "WarCoin"; value: "WRC*"} - ListElement { cryptoname: "BenjiRolls"; value: "BENJI"} - ListElement { cryptoname: "Humaniq"; value: "HMQ"} - ListElement { cryptoname: "Blockchain Capital"; value: "BCAP"} - ListElement { cryptoname: "ParallelCoin"; value: "DUO"} - ListElement { cryptoname: "RiptoBuX"; value: "RBX"} - ListElement { cryptoname: "GrowthCoin"; value: "GRW"} - ListElement { cryptoname: "Apx"; value: "APX"} - ListElement { cryptoname: "MiloCoin"; value: "MILO"} - ListElement { cryptoname: "OldV"; value: "OLV"} - ListElement { cryptoname: "ILCoin"; value: "ILC"} - ListElement { cryptoname: "MinersReward"; value: "MRT"} - ListElement { cryptoname: "IOU1"; value: "IOU"} - ListElement { cryptoname: "Prizm"; value: "PZM"} - ListElement { cryptoname: "Phreak"; value: "PHR"} - ListElement { cryptoname: "Aragon"; value: "ANT"} - ListElement { cryptoname: "PupaCoin"; value: "PUPA"} - ListElement { cryptoname: "RiceCoin"; value: "RICE"} - ListElement { cryptoname: "C-Bits"; value: "XCT"} - ListElement { cryptoname: "Redcoin"; value: "RED"} - ListElement { cryptoname: "ZSEcoin"; value: "ZSE"} - ListElement { cryptoname: "Coinmatic"; value: "CTIC"} - ListElement { cryptoname: "TappingCoin"; value: "TAP"} - ListElement { cryptoname: "BitOKX"; value: "BITOK"} - ListElement { cryptoname: "Primalbase"; value: "PBT"} - ListElement { cryptoname: "MilkCoin"; value: "MUU"} - ListElement { cryptoname: "Infinium-8"; value: "INF8"} - ListElement { cryptoname: "HTML5 Coin"; value: "HTML5"} - ListElement { cryptoname: "Minereum"; value: "MNE"} - ListElement { cryptoname: "Etheroll"; value: "DICE"} - ListElement { cryptoname: "Subscriptio"; value: "SUB*"} - ListElement { cryptoname: "Ultimate Secure Cash"; value: "USC"} - ListElement { cryptoname: "DuxCoin"; value: "DUX"} - ListElement { cryptoname: "PoisonIvyCoin"; value: "XPS"} - ListElement { cryptoname: "EquiTrader"; value: "EQT"} - ListElement { cryptoname: "Insane Coin"; value: "INSN"} - ListElement { cryptoname: "Basic Attention Token"; value: "BAT"} - ListElement { cryptoname: "Manet Coin"; value: "MAT*"} - ListElement { cryptoname: "F16Coin"; value: "F16"} - ListElement { cryptoname: "HamsterCoin"; value: "HAMS"} - ListElement { cryptoname: "QTUM"; value: "QTUM"} - ListElement { cryptoname: "NefariousCoin"; value: "NEF"} - ListElement { cryptoname: "BOScoin"; value: "BOS"} - ListElement { cryptoname: "Qwark"; value: "QWARK"} - ListElement { cryptoname: "IOTA"; value: "IOT"} - ListElement { cryptoname: "Quantum Resistant Ledger"; value: "QRL"} - ListElement { cryptoname: "E-CurrencyCoin"; value: "ECC*"} - ListElement { cryptoname: "Patientory"; value: "PTOY"} - ListElement { cryptoname: "ZrCoin"; value: "ZRC"} - ListElement { cryptoname: "Lykke"; value: "LKK"} - ListElement { cryptoname: "Espers"; value: "ESP"} - ListElement { cryptoname: "Dynamic"; value: "DYN"} - ListElement { cryptoname: "Sequence"; value: "SEQ"} - ListElement { cryptoname: "MCAP"; value: "MCAP"} - ListElement { cryptoname: "Mysterium"; value: "MYST"} - ListElement { cryptoname: "Veritaseum"; value: "VERI"} - ListElement { cryptoname: "SONM"; value: "SNM"} - ListElement { cryptoname: "Cofound.it"; value: "CFI"} - ListElement { cryptoname: "Status Network Token"; value: "SNT"} - ListElement { cryptoname: "Civic"; value: "CVC"} - ListElement { cryptoname: "iXledger"; value: "IXT"} - ListElement { cryptoname: "Dent"; value: "DENT"} - ListElement { cryptoname: "Ethos"; value: "ETHOS"} - ListElement { cryptoname: "Starta"; value: "STA"} - ListElement { cryptoname: "Ergo"; value: "EFYT"} - ListElement { cryptoname: "Tezos"; value: "XTZ"} - ListElement { cryptoname: "Monaco"; value: "MCO"} - ListElement { cryptoname: "Numerai"; value: "NMR"} - ListElement { cryptoname: "AdEx"; value: "ADX"} - ListElement { cryptoname: "Quantum"; value: "QAU"} - ListElement { cryptoname: "EcoBit"; value: "ECOB"} - ListElement { cryptoname: "Tether"; value: "USDT"} - ListElement { cryptoname: "Ahoolee"; value: "AHT"} - ListElement { cryptoname: "ATB coin"; value: "ATB"} - ListElement { cryptoname: "Blocktix"; value: "TIX"} - ListElement { cryptoname: "Compcoin"; value: "CMP"} - ListElement { cryptoname: "Rivetz"; value: "RVT"} - ListElement { cryptoname: "Harbour DAO"; value: "HRB"} - ListElement { cryptoname: "Nimiq Exchange Token"; value: "NET*"} - ListElement { cryptoname: "8 Circuit Studios"; value: "8BT"} - ListElement { cryptoname: "ACT"; value: "ACT"} - ListElement { cryptoname: "district0x"; value: "DNT"} - ListElement { cryptoname: "Suretly"; value: "SUR"} - ListElement { cryptoname: "CryptoPing"; value: "PING"} - ListElement { cryptoname: "MakeItViral"; value: "MIV"} - ListElement { cryptoname: "DAO.casino"; value: "BET*"} - ListElement { cryptoname: "Santiment"; value: "SAN"} - ListElement { cryptoname: "Kin"; value: "KIN"} - ListElement { cryptoname: "Wagerr"; value: "WGR"} - ListElement { cryptoname: "Elastic"; value: "XEL"} - ListElement { cryptoname: "NVO"; value: "NVST"} - ListElement { cryptoname: "FunFair"; value: "FUN"} - ListElement { cryptoname: "FunCoin"; value: "FUNC"} - ListElement { cryptoname: "PAquarium"; value: "PQT"} - ListElement { cryptoname: "Giga Watt"; value: "WTT"} - ListElement { cryptoname: "Metal"; value: "MTL"} - ListElement { cryptoname: "Hive Project"; value: "HVN"} - ListElement { cryptoname: "Populous"; value: "PPT"} - ListElement { cryptoname: "SunContract"; value: "SNC"} - ListElement { cryptoname: "Starbase"; value: "STAR"} - ListElement { cryptoname: "Corion"; value: "COR"} - ListElement { cryptoname: "Rialto.AI"; value: "XRL"} - ListElement { cryptoname: "Orocrypt"; value: "OROC"} - ListElement { cryptoname: "OpenANX"; value: "OAX"} - ListElement { cryptoname: "Monster Byte Inc"; value: "MBI"} - ListElement { cryptoname: "Digital Developers Fund"; value: "DDF"} - ListElement { cryptoname: "DIMCOIN"; value: "DIM"} - ListElement { cryptoname: "Encrypgen"; value: "DNA"} - ListElement { cryptoname: "FundYourselfNow"; value: "FYN"} - ListElement { cryptoname: "Dinastycoin"; value: "DCY"} - ListElement { cryptoname: "CryptoForecast"; value: "CFT"} - ListElement { cryptoname: "Denarius"; value: "DNR"} - ListElement { cryptoname: "DigitalPrice"; value: "DP"} - ListElement { cryptoname: "Virta Unique Coin"; value: "VUC"} - ListElement { cryptoname: "Bitcoin Planet"; value: "BTPL"} - ListElement { cryptoname: "Unify"; value: "UNIFY"} - ListElement { cryptoname: "ImperialCoin"; value: "IPC"} - ListElement { cryptoname: "BritCoin"; value: "BRIT"} - ListElement { cryptoname: "Ammo Rewards"; value: "AMMO"} - ListElement { cryptoname: "SocialCoin"; value: "SOCC"} - ListElement { cryptoname: "Mass.Cloud"; value: "MASS"} - ListElement { cryptoname: "LATOKEN"; value: "LA"} - ListElement { cryptoname: "IMMLA"; value: "IML"} - ListElement { cryptoname: "BitJob"; value: "STU"} - ListElement { cryptoname: "Pillar"; value: "PLR"} - ListElement { cryptoname: "GeoFunders"; value: "GUNS"} - ListElement { cryptoname: "InvestFeed"; value: "IFT"} - ListElement { cryptoname: "BitClave"; value: "CAT"} - ListElement { cryptoname: "Propy"; value: "PRO"} - ListElement { cryptoname: "SynchroCoin"; value: "SYC"} - ListElement { cryptoname: "Indorse"; value: "IND"} - ListElement { cryptoname: "Bowhead Health"; value: "AHT*"} - ListElement { cryptoname: "TribeToken"; value: "TRIBE"} - ListElement { cryptoname: "0x"; value: "ZRX"} - ListElement { cryptoname: "Tierion"; value: "TNT"} - ListElement { cryptoname: "Presearch"; value: "PRE*"} - ListElement { cryptoname: "COSS"; value: "COSS"} - ListElement { cryptoname: "Storm"; value: "STORM"} - ListElement { cryptoname: "Storj"; value: "STORJ"} - ListElement { cryptoname: "Scorecoin"; value: "SCORE"} - ListElement { cryptoname: "OmiseGo"; value: "OMG"} - ListElement { cryptoname: "Octanox"; value: "OTX"} - ListElement { cryptoname: "Equibit"; value: "EQB"} - ListElement { cryptoname: "Voise"; value: "VOISE"} - ListElement { cryptoname: "EthBits"; value: "ETBS"} - ListElement { cryptoname: "Crypviser"; value: "CVCOIN"} - ListElement { cryptoname: "DCORP"; value: "DRP"} - ListElement { cryptoname: "ArcticCoin"; value: "ARC"} - ListElement { cryptoname: "Bogcoin"; value: "BOG"} - ListElement { cryptoname: "NeverDie"; value: "NDC"} - ListElement { cryptoname: "Po.et"; value: "POE"} - ListElement { cryptoname: "AdToken"; value: "ADT"} - ListElement { cryptoname: "Aeternity"; value: "AE"} - ListElement { cryptoname: "Useless Ethereum Token"; value: "UET"} - ListElement { cryptoname: "Particl"; value: "PART"} - ListElement { cryptoname: "Agoras Token"; value: "AGRS"} - ListElement { cryptoname: "BeachCoin"; value: "SAND"} - ListElement { cryptoname: "AICoin"; value: "XAI*"} - ListElement { cryptoname: "DMarket"; value: "DMT"} - ListElement { cryptoname: "DAS"; value: "DAS"} - ListElement { cryptoname: "Adshares"; value: "ADST"} - ListElement { cryptoname: "BlockCAT"; value: "CAT*"} - ListElement { cryptoname: "CoinJob"; value: "XCJ"} - ListElement { cryptoname: "Royal Kingdom Coin"; value: "RKC"} - ListElement { cryptoname: "NoLimitCoin"; value: "NLC2"} - ListElement { cryptoname: "Linda"; value: "LINDA"} - ListElement { cryptoname: "Spoon"; value: "SPN"} - ListElement { cryptoname: "King93"; value: "KING"} - ListElement { cryptoname: "Anacrypt"; value: "ANCP"} - ListElement { cryptoname: "Sosnovkino"; value: "SNK"} - ListElement { cryptoname: "CryptoABS"; value: "CABS"} - ListElement { cryptoname: "Opus"; value: "OPT"} - ListElement { cryptoname: "OpenZen"; value: "ZNT"} - ListElement { cryptoname: "Bits Digit"; value: "BITSD"} - ListElement { cryptoname: "LeviarCoin"; value: "XLC"} - ListElement { cryptoname: "Skincoin"; value: "SKIN"} - ListElement { cryptoname: "Mothership"; value: "MSP"} - ListElement { cryptoname: "BrickBlock"; value: "BBT*"} - ListElement { cryptoname: "REAL"; value: "REAL"} - ListElement { cryptoname: "DentalFix"; value: "DFBT"} - ListElement { cryptoname: "EQUI"; value: "EQ"} - ListElement { cryptoname: "Wolk"; value: "WLK"} - ListElement { cryptoname: "DeepOnion"; value: "ONION"} - ListElement { cryptoname: "Bitcore"; value: "BTX"} - ListElement { cryptoname: "iDice"; value: "ICE"} - ListElement { cryptoname: "Sphre AIR"; value: "XID"} - ListElement { cryptoname: "gCn Coin"; value: "GCN"} - ListElement { cryptoname: "Cosmos"; value: "ATOM*"} - ListElement { cryptoname: "ICO OpenLedger"; value: "ICOO"} - ListElement { cryptoname: "Timereum"; value: "TME"} - ListElement { cryptoname: "SmartCash"; value: "SMART"} - ListElement { cryptoname: "Signatum"; value: "SIGT"} - ListElement { cryptoname: "Onix"; value: "ONX"} - ListElement { cryptoname: "CoEval"; value: "COE"} - ListElement { cryptoname: "Arena"; value: "ARENA"} - ListElement { cryptoname: "Wink"; value: "WINK"} - ListElement { cryptoname: "Cream"; value: "CRM"} - ListElement { cryptoname: "DigiPulse"; value: "DGPT"} - ListElement { cryptoname: "Mobius"; value: "MOBI"} - ListElement { cryptoname: "BitDice"; value: "CSNO"} - ListElement { cryptoname: "KickCoin"; value: "KICK"} - ListElement { cryptoname: "Solar DAO"; value: "SDAO"} - ListElement { cryptoname: "Stox"; value: "STX"} - ListElement { cryptoname: "Core Group Asset"; value: "CORE"} - ListElement { cryptoname: "Kencoin"; value: "KCN"} - ListElement { cryptoname: "Qvolta"; value: "QVT"} - ListElement { cryptoname: "Ties Network"; value: "TIE"} - ListElement { cryptoname: "Autoria"; value: "AUT"} - ListElement { cryptoname: "CodeTract"; value: "CTT"} - ListElement { cryptoname: "Growers International"; value: "GRWI"} - ListElement { cryptoname: "Monkey"; value: "MNY"} - ListElement { cryptoname: "Monetha"; value: "MTH"} - ListElement { cryptoname: "CCCoin"; value: "CCC"} - ListElement { cryptoname: "Umbrella Coin"; value: "UMC"} - ListElement { cryptoname: "Bitmxittz"; value: "BMXT"} - ListElement { cryptoname: "Gas"; value: "GAS"} - ListElement { cryptoname: "FileCoin"; value: "FIL"} - ListElement { cryptoname: "Oceanlab"; value: "OCL"} - ListElement { cryptoname: "Benjacoin"; value: "BNC"} - ListElement { cryptoname: "Tomahawkcoin"; value: "TOM"} - ListElement { cryptoname: "Bytom"; value: "BTM*"} - ListElement { cryptoname: "Asch"; value: "XAS"} - ListElement { cryptoname: "SMNX"; value: "SMNX"} - ListElement { cryptoname: "Dentacoin"; value: "DCN"} - ListElement { cryptoname: "Agrello Delta"; value: "DLT"} - ListElement { cryptoname: "Macroverse"; value: "MRV"} - ListElement { cryptoname: "Embers"; value: "MBRS"} - ListElement { cryptoname: "Substratum Network"; value: "SUB"} - ListElement { cryptoname: "Memessenger"; value: "MET"} - ListElement { cryptoname: "Prospectors"; value: "PGL"} - ListElement { cryptoname: "Cash Poker Pro"; value: "CASH*"} - ListElement { cryptoname: "CampusCoin"; value: "CMPCO"} - ListElement { cryptoname: "DetectorToken"; value: "DTCT"} - ListElement { cryptoname: "Centra"; value: "CTR"} - ListElement { cryptoname: "Wavesnode.net"; value: "WNET"} - ListElement { cryptoname: "ThankYou"; value: "THNX"} - ListElement { cryptoname: "HealthyWorm"; value: "WORM"} - ListElement { cryptoname: "Veredictum"; value: "VNT"} - ListElement { cryptoname: "Smart Investment Fund Token"; value: "SIFT"} - ListElement { cryptoname: "Ignis"; value: "IGNIS"} - ListElement { cryptoname: "IwToken"; value: "IWT"} - ListElement { cryptoname: "JustDatingSite"; value: "JDC"} - ListElement { cryptoname: "Aigang"; value: "AIX"} - ListElement { cryptoname: "Everex"; value: "EVX"} - ListElement { cryptoname: "Entropy Token"; value: "ENTRP"} - ListElement { cryptoname: "ICOBox"; value: "ICOS"} - ListElement { cryptoname: "Lampix"; value: "PIX"} - ListElement { cryptoname: "MediBond"; value: "MEDI"} - ListElement { cryptoname: "Hello Gold"; value: "HGT"} - ListElement { cryptoname: "Litra"; value: "LTA"} - ListElement { cryptoname: "Nimfamoney"; value: "NIMFA"} - ListElement { cryptoname: "Scorista"; value: "SCOR"} - ListElement { cryptoname: "CPROP"; value: "MLS"} - ListElement { cryptoname: "KexCoin"; value: "KEX"} - ListElement { cryptoname: "Cobinhood"; value: "COB"} - ListElement { cryptoname: "Bitradio"; value: "BRO"} - ListElement { cryptoname: "Minex"; value: "MINEX"} - ListElement { cryptoname: "ATLANT"; value: "ATL"} - ListElement { cryptoname: "BeckSang"; value: "ARI*"} - ListElement { cryptoname: "Magos"; value: "MAG*"} - ListElement { cryptoname: "Draftcoin"; value: "DFT"} - ListElement { cryptoname: "Vechain"; value: "VEN"} - ListElement { cryptoname: "Utrust"; value: "UTK"} - ListElement { cryptoname: "Latium"; value: "LAT"} - ListElement { cryptoname: "Sojourn Coin"; value: "SOJ"} - ListElement { cryptoname: "Hedge Token"; value: "HDG"} - ListElement { cryptoname: "Stakecoin"; value: "STCN"} - ListElement { cryptoname: "SqPay"; value: "SQP"} - ListElement { cryptoname: "Etheriya"; value: "RIYA"} - ListElement { cryptoname: "Ethereum.Link"; value: "LNK"} - ListElement { cryptoname: "Ambrosus"; value: "AMB"} - ListElement { cryptoname: "Wanchain"; value: "WAN"} - ListElement { cryptoname: "AltoCar"; value: "ALTOCAR"} - ListElement { cryptoname: "Credo"; value: "CFT*"} - ListElement { cryptoname: "Blockchain Index"; value: "BLX"} - ListElement { cryptoname: "BANKEX"; value: "BKX"} - ListElement { cryptoname: "Boulle"; value: "BOU"} - ListElement { cryptoname: "Oxycoin"; value: "OXY"} - ListElement { cryptoname: "Acumen"; value: "AMT"} - ListElement { cryptoname: "Gimli"; value: "GIM"} - ListElement { cryptoname: "LiteBitcoin"; value: "LBTC"} - ListElement { cryptoname: "FrazCoin"; value: "FRAZ"} - ListElement { cryptoname: "EasyMine"; value: "EMT"} - ListElement { cryptoname: "Gx Coin"; value: "GXC"} - ListElement { cryptoname: "Hubiit"; value: "HBT"} - ListElement { cryptoname: "Kronecoin"; value: "KRONE"} - ListElement { cryptoname: "Scrypto"; value: "SRT"} - ListElement { cryptoname: "Avalon"; value: "AVA"} - ListElement { cryptoname: "BuildTeam"; value: "BT"} - ListElement { cryptoname: "AdCoin"; value: "ACC"} - ListElement { cryptoname: "Z2 Coin"; value: "Z2"} - ListElement { cryptoname: "Linx"; value: "LINX"} - ListElement { cryptoname: "CoinonatX"; value: "XCXT"} - ListElement { cryptoname: "BlakeStar"; value: "BLAS"} - ListElement { cryptoname: "GoodCoin"; value: "GOOD"} - ListElement { cryptoname: "Travel Coin"; value: "TRV"} - ListElement { cryptoname: "Cryptum"; value: "CRTM"} - ListElement { cryptoname: "Primas"; value: "PST"} - ListElement { cryptoname: "Matryx"; value: "MTX"} - ListElement { cryptoname: "Privatix"; value: "PRIX"} - ListElement { cryptoname: "CarTaxi"; value: "CTX"} - ListElement { cryptoname: "Enjin Coin"; value: "ENJ"} - ListElement { cryptoname: "Cryptonex"; value: "CNX"} - ListElement { cryptoname: "Dropcoin"; value: "DRC"} - ListElement { cryptoname: "Etherparty"; value: "FUEL"} - ListElement { cryptoname: "TokenStars"; value: "ACE"} - ListElement { cryptoname: "Worldcore"; value: "WRC"} - ListElement { cryptoname: "Waltonchain"; value: "WTC"} - ListElement { cryptoname: "Breakout Stake"; value: "BRX"} - ListElement { cryptoname: "WRTcoin"; value: "WRT"} - ListElement { cryptoname: "Ormeus Coin"; value: "ORME"} - ListElement { cryptoname: "Deep Gold"; value: "DEEP"} - ListElement { cryptoname: "Wish Finance"; value: "WSH"} - ListElement { cryptoname: "ARNA Panacea"; value: "ARNA"} - ListElement { cryptoname: "AB-Chain"; value: "ABC"} - ListElement { cryptoname: "Papyrus"; value: "PRP"} - ListElement { cryptoname: "Blackmoon Crypto"; value: "BMC"} - ListElement { cryptoname: "Skrilla Token"; value: "SKR*"} - ListElement { cryptoname: "3DES"; value: "3DES"} - ListElement { cryptoname: "Paycentos"; value: "PYN"} - ListElement { cryptoname: "Kapu"; value: "KAPU"} - ListElement { cryptoname: "Sense Token"; value: "SENSE"} - ListElement { cryptoname: "Facecoin"; value: "FC"} - ListElement { cryptoname: "Ripio"; value: "RCN"} - ListElement { cryptoname: "Doc.ai Neuron"; value: "NRN"} - ListElement { cryptoname: "Eventchain"; value: "EVC"} - ListElement { cryptoname: "ChainLink"; value: "LINK"} - ListElement { cryptoname: "Crowdwiz"; value: "WIZ"} - ListElement { cryptoname: "Eidoo"; value: "EDO"} - ListElement { cryptoname: "A-Token"; value: "ATKN"} - ListElement { cryptoname: "Kyber Network"; value: "KNC"} - ListElement { cryptoname: "Rustbits"; value: "RUSTBITS"} - ListElement { cryptoname: "REX"; value: "REX"} - ListElement { cryptoname: "Ethereum Dark"; value: "ETHD"} - ListElement { cryptoname: "Sumokoin"; value: "SUMO"} - ListElement { cryptoname: "Elite 888"; value: "8S"} - ListElement { cryptoname: "Hydrominer"; value: "H2O"} - ListElement { cryptoname: "Crypto Tickets"; value: "TKT"} - ListElement { cryptoname: "Rhea"; value: "RHEA"} - ListElement { cryptoname: "Maecenas"; value: "ART"} - ListElement { cryptoname: "DomRaider"; value: "DRT"} - ListElement { cryptoname: "Snovio"; value: "SNOV"} - ListElement { cryptoname: "TrackNetToken"; value: "MTN"} - ListElement { cryptoname: "StockBet"; value: "STOCKBET"} - ListElement { cryptoname: "Algo.Land"; value: "PLM"} - ListElement { cryptoname: "Salt Lending"; value: "SALT"} - ListElement { cryptoname: "Sandcoin"; value: "SND"} - ListElement { cryptoname: "Experience Points"; value: "XP"} - ListElement { cryptoname: "Loopring"; value: "LRC"} - ListElement { cryptoname: "Hshare"; value: "HSR"} - ListElement { cryptoname: "Gladius"; value: "GLA"} - ListElement { cryptoname: "Zenome"; value: "ZNA"} - ListElement { cryptoname: "EZMarket"; value: "EZM"} - ListElement { cryptoname: "Obsidian"; value: "ODN"} - ListElement { cryptoname: "ClearPoll"; value: "POLL"} - ListElement { cryptoname: "Moya Token"; value: "MTK"} - ListElement { cryptoname: "Cashaa"; value: "CAS"} - ListElement { cryptoname: "MiniApps"; value: "MAT"} - ListElement { cryptoname: "Global Jobcoin"; value: "GJC"} - ListElement { cryptoname: "Wi Coin"; value: "WIC"} - ListElement { cryptoname: "WandX"; value: "WAND"} - ListElement { cryptoname: "Elixir"; value: "ELIX"} - ListElement { cryptoname: "Yoyow"; value: "YOYOW"} - ListElement { cryptoname: "Regalcoin"; value: "REC"} - ListElement { cryptoname: "Bismuth"; value: "BIS"} - ListElement { cryptoname: "Vsync"; value: "VSX"} - ListElement { cryptoname: "WishFinance"; value: "WISH*"} - ListElement { cryptoname: "FLASH coin"; value: "FLASH"} - ListElement { cryptoname: "Crazy Coin"; value: "CZC"} - ListElement { cryptoname: "PayPie"; value: "PPP"} - ListElement { cryptoname: "Peerguess"; value: "GUESS"} - ListElement { cryptoname: "CanYaCoin"; value: "CAN"} - ListElement { cryptoname: "Metaverse"; value: "ETP"} - ListElement { cryptoname: "Esports.com"; value: "ERT"} - ListElement { cryptoname: "LakeBanker"; value: "BAC*"} - ListElement { cryptoname: "FLiK"; value: "FLIK"} - ListElement { cryptoname: "Multibot"; value: "MBT"} - ListElement { cryptoname: "Javvy"; value: "JVY"} - ListElement { cryptoname: "ALISmedia"; value: "ALIS"} - ListElement { cryptoname: "Leverj"; value: "LEV"} - ListElement { cryptoname: "Arbi"; value: "ARBI"} - ListElement { cryptoname: "Eloplay"; value: "ELT"} - ListElement { cryptoname: "Request Network"; value: "REQ"} - ListElement { cryptoname: "Aeron"; value: "ARN"} - ListElement { cryptoname: "Datum"; value: "DAT"} - ListElement { cryptoname: "VIBEHub"; value: "VIBE"} - ListElement { cryptoname: "Rockchain"; value: "ROK"} - ListElement { cryptoname: "X Real Estate Development"; value: "XRED"} - ListElement { cryptoname: "Chronologic"; value: "DAY"} - ListElement { cryptoname: "AirSwap"; value: "AST"} - ListElement { cryptoname: "Gameflip"; value: "FLP"} - ListElement { cryptoname: "HextraCoin"; value: "HXT"} - ListElement { cryptoname: "Cindicator"; value: "CND"} - ListElement { cryptoname: "Prosense.tv"; value: "VRP"} - ListElement { cryptoname: "NetM"; value: "NTM"} - ListElement { cryptoname: "TrezarCoin"; value: "TZC"} - ListElement { cryptoname: "Enigma"; value: "ENG"} - ListElement { cryptoname: "Musiconomi"; value: "MCI"} - ListElement { cryptoname: "Covesting"; value: "COV"} - ListElement { cryptoname: "AirToken"; value: "AIR"} - ListElement { cryptoname: "Fujinto"; value: "NTO"} - ListElement { cryptoname: "ATC Coin"; value: "ATCC"} - ListElement { cryptoname: "Kolion"; value: "KOLION"} - ListElement { cryptoname: "Wild Crypto"; value: "WILD"} - ListElement { cryptoname: "eLTC"; value: "ELTC2"} - ListElement { cryptoname: "ILCoin Token"; value: "ILCT"} - ListElement { cryptoname: "Power Ledger"; value: "POWR"} - ListElement { cryptoname: "Crypto20"; value: "C20"} - ListElement { cryptoname: "Anryze"; value: "RYZ"} - ListElement { cryptoname: "GenXCoin"; value: "GXC*"} - ListElement { cryptoname: "Elements"; value: "ELM"} - ListElement { cryptoname: "TerraNovaCoin"; value: "TER"} - ListElement { cryptoname: "CybCSec Coin"; value: "XCS"} - ListElement { cryptoname: "Bitqy"; value: "BQ"} - ListElement { cryptoname: "Caviar"; value: "CAV"} - ListElement { cryptoname: "Clout"; value: "CLOUT"} - ListElement { cryptoname: "Propthereum"; value: "PTC*"} - ListElement { cryptoname: "WaBi"; value: "WABI"} - ListElement { cryptoname: "Everus"; value: "EVR"} - ListElement { cryptoname: "TOA Coin"; value: "TOA"} - ListElement { cryptoname: "Monaize"; value: "MNZ"} - ListElement { cryptoname: "VIVO Coin"; value: "VIVO"} - ListElement { cryptoname: "Red Pulse"; value: "RPX"} - ListElement { cryptoname: "Moeda"; value: "MDA"} - ListElement { cryptoname: "Zeusshield"; value: "ZSC"} - ListElement { cryptoname: "Aureus"; value: "AURS"} - ListElement { cryptoname: "Change"; value: "CAG"} - ListElement { cryptoname: "Playkey"; value: "PKT"} - ListElement { cryptoname: "Internxt"; value: "INXT"} - ListElement { cryptoname: "Authorship"; value: "ATS"} - ListElement { cryptoname: "RG Coin"; value: "RGC"} - ListElement { cryptoname: "EthBet"; value: "EBET"} - ListElement { cryptoname: "Revain"; value: "R"} - ListElement { cryptoname: "Modum"; value: "MOD"} - ListElement { cryptoname: "Bitcomo"; value: "BM*"} - ListElement { cryptoname: "CryptoPay"; value: "CPAY"} - ListElement { cryptoname: "Bonpay"; value: "BON"} - ListElement { cryptoname: "AppCoins"; value: "APPC"} - ListElement { cryptoname: "WhaleCoin"; value: "WHL"} - ListElement { cryptoname: "UpToken"; value: "UP"} - ListElement { cryptoname: "Ethereum Gold"; value: "ETG"} - ListElement { cryptoname: "WomenCoin"; value: "WOMEN"} - ListElement { cryptoname: "Theresa May Coin"; value: "MAY"} - ListElement { cryptoname: "Render Token"; value: "RNDR"} - ListElement { cryptoname: "Eddie coin"; value: "EDDIE"} - ListElement { cryptoname: "Soma"; value: "SCT*"} - ListElement { cryptoname: "Kucoin"; value: "KCS"} - ListElement { cryptoname: "GATCOIN"; value: "GAT"} - ListElement { cryptoname: "Ethereum Blue"; value: "BLUE"} - ListElement { cryptoname: "Wyrify"; value: "WYR"} - ListElement { cryptoname: "Vezt"; value: "VZT"} - ListElement { cryptoname: "IndiCoin"; value: "INDI"} - ListElement { cryptoname: "LUXCoin"; value: "LUX"} - ListElement { cryptoname: "TBIS token"; value: "BAR"} - ListElement { cryptoname: "Pirl"; value: "PIRL"} - ListElement { cryptoname: "Ethereum Cash"; value: "ECASH"} - ListElement { cryptoname: "Dragonchain"; value: "DRGN"} - ListElement { cryptoname: "ODMCoin"; value: "ODMC"} - ListElement { cryptoname: "CyberTrust"; value: "CABS*"} - ListElement { cryptoname: "Dynamic Trading Rights"; value: "DTR"} - ListElement { cryptoname: "CryptoInsight"; value: "TKR"} - ListElement { cryptoname: "SelfKey"; value: "KEY"} - ListElement { cryptoname: "EthereumLite"; value: "ELITE"} - ListElement { cryptoname: "Xios"; value: "XIOS"} - ListElement { cryptoname: "DOVU"; value: "DOVU"} - ListElement { cryptoname: "Electroneum"; value: "ETN"} - ListElement { cryptoname: "Realisto"; value: "REA"} - ListElement { cryptoname: "Avesta"; value: "AVE"} - ListElement { cryptoname: "Xenon"; value: "XNN"} - ListElement { cryptoname: "Bitcloud 2.0"; value: "BTDX"} - ListElement { cryptoname: "Lendoit"; value: "LOAN"} - ListElement { cryptoname: "ZABERcoin"; value: "ZAB"} - ListElement { cryptoname: "Bitfinex Bitcoin Future"; value: "BT1"} - ListElement { cryptoname: "Bitcoin SegWit2X"; value: "BT2"} - ListElement { cryptoname: "Jincor"; value: "JCR"} - ListElement { cryptoname: "Extreme Sportsbook"; value: "XSB"} - ListElement { cryptoname: "ATMChain"; value: "ATM"} - ListElement { cryptoname: "eBoost"; value: "EBST"} - ListElement { cryptoname: "KekCoin"; value: "KEK"} - ListElement { cryptoname: "AidCoin"; value: "AID"} - ListElement { cryptoname: "BlackholeCoin"; value: "BHC*"} - ListElement { cryptoname: "AltCommunity Coin"; value: "ALTCOM"} - ListElement { cryptoname: "Simple Token"; value: "OST"} - ListElement { cryptoname: "ugChain"; value: "UGC"} - ListElement { cryptoname: "Datacoin"; value: "DTC*"} - ListElement { cryptoname: "HEROcoin"; value: "PLAY"} - ListElement { cryptoname: "Pure"; value: "PURE"} - ListElement { cryptoname: "Cloud"; value: "CLD"} - ListElement { cryptoname: "Open Trading Network"; value: "OTN"} - ListElement { cryptoname: "PoSToken"; value: "POS"} - ListElement { cryptoname: "NEO Gold"; value: "NEOG"} - ListElement { cryptoname: "ExchangeN"; value: "EXN"} - ListElement { cryptoname: "Tracto"; value: "TRCT"} - ListElement { cryptoname: "UnikoinGold"; value: "UKG"} - ListElement { cryptoname: "Bitcoin Red"; value: "BTCRED"} - ListElement { cryptoname: "eBitcoinCash"; value: "EBCH"} - ListElement { cryptoname: "AIX"; value: "AXT"} - ListElement { cryptoname: "Raiden Network"; value: "RDN*"} - ListElement { cryptoname: "Neumark"; value: "NEU"} - ListElement { cryptoname: "BlueDragon"; value: "BDR"} - ListElement { cryptoname: "Dutch Coin"; value: "DUTCH"} - ListElement { cryptoname: "Trade.io"; value: "TIO"} - ListElement { cryptoname: "Huncoin"; value: "HNC*"} - ListElement { cryptoname: "MadCoin"; value: "MDC*"} - ListElement { cryptoname: "Pura"; value: "PURA"} - ListElement { cryptoname: "Innova"; value: "INN"} - ListElement { cryptoname: "Decision Token"; value: "HST"} - ListElement { cryptoname: "BlockMason Credit Protocol"; value: "BCPT"} - ListElement { cryptoname: "Bitdeal"; value: "BDL"} - ListElement { cryptoname: "COMSA"; value: "CMS"} - ListElement { cryptoname: "Billionaire Token"; value: "XBL"} - ListElement { cryptoname: "Project Zephyr"; value: "ZEPH"} - ListElement { cryptoname: "ATFS Project"; value: "ATFS"} - ListElement { cryptoname: "Nuls"; value: "NULS"} - ListElement { cryptoname: "Phore"; value: "PHR*"} - ListElement { cryptoname: "LitecoinCash"; value: "LCASH"} - ListElement { cryptoname: "Confido"; value: "CFD"} - ListElement { cryptoname: "SophiaTX"; value: "SPHTX"} - ListElement { cryptoname: "PlusCoin"; value: "PLC"} - ListElement { cryptoname: "SirinLabs"; value: "SRN"} - ListElement { cryptoname: "WiserCoin"; value: "WSC"} - ListElement { cryptoname: "Decent.bet"; value: "DBET"} - ListElement { cryptoname: "Go!"; value: "xGOx"} - ListElement { cryptoname: "Newbium"; value: "NEWB"} - ListElement { cryptoname: "LIFE"; value: "LIFE"} - ListElement { cryptoname: "Russian Mining Coin"; value: "RMC"} - ListElement { cryptoname: "Credo"; value: "CREDO"} - ListElement { cryptoname: "Masari"; value: "MSR"} - ListElement { cryptoname: "Ethersportcoin"; value: "ESC"} - ListElement { cryptoname: "Envion"; value: "EVN"} - ListElement { cryptoname: "BlockPool"; value: "BPL"} - ListElement { cryptoname: "RocketCoin "; value: "ROCK*"} - ListElement { cryptoname: "Droxne"; value: "DRXNE"} - ListElement { cryptoname: "Sakuracoin"; value: "SKR"} - ListElement { cryptoname: "Grid+"; value: "GRID"} - ListElement { cryptoname: "PlatinumBAR"; value: "XPTX"} - ListElement { cryptoname: "Genesis Vision"; value: "GVT"} - ListElement { cryptoname: "Energi Token"; value: "ETK"} - ListElement { cryptoname: "Astronaut"; value: "ASTRO"} - ListElement { cryptoname: "Mercury Protocol"; value: "GMT"} - ListElement { cryptoname: "Emphy"; value: "EPY*"} - ListElement { cryptoname: "Soarcoin"; value: "SOAR"} - ListElement { cryptoname: "MinexCoin"; value: "MNX"} - ListElement { cryptoname: "Credits"; value: "CRDS"} - ListElement { cryptoname: "Viuly"; value: "VIU"} - ListElement { cryptoname: "Düber"; value: "DBR"} - ListElement { cryptoname: "STAC"; value: "STAC"} - ListElement { cryptoname: "Quantstamp"; value: "QSP"} - ListElement { cryptoname: "RiptideCoin"; value: "RIPT"} - ListElement { cryptoname: "BitBoost"; value: "BBT"} - ListElement { cryptoname: "GoByte"; value: "GBX"} - ListElement { cryptoname: "Insta Cash Coin"; value: "ICC"} - ListElement { cryptoname: "Jibrel Network Token"; value: "JNT"} - ListElement { cryptoname: "Quoine Liquid"; value: "QASH"} - ListElement { cryptoname: "Alqo"; value: "ALQO"} - ListElement { cryptoname: "KingN Coin"; value: "KNC**"} - ListElement { cryptoname: "Triaconta"; value: "TRIA"} - ListElement { cryptoname: "Publica"; value: "PBL"} - ListElement { cryptoname: "Upfiring"; value: "UFR"} - ListElement { cryptoname: "LociCoin"; value: "LOCI"} - ListElement { cryptoname: "Lamden Tau"; value: "TAU"} - ListElement { cryptoname: "Labrys"; value: "LAB"} - ListElement { cryptoname: "Flixxo"; value: "FLIXX"} - ListElement { cryptoname: "Farad"; value: "FRD"} - ListElement { cryptoname: "Electra"; value: "ECA"} - ListElement { cryptoname: "Ludum token"; value: "LDM"} - ListElement { cryptoname: "LiteCoin Gold"; value: "LTG"} - ListElement { cryptoname: "StashPay"; value: "STP"} - ListElement { cryptoname: "SpankChain"; value: "SPANK"} - ListElement { cryptoname: "MyWish"; value: "WISH"} - ListElement { cryptoname: "Aerium"; value: "AERM"} - ListElement { cryptoname: "PlexCoin"; value: "PLX"} - ListElement { cryptoname: "EtherBTC"; value: "ETHB"} - ListElement { cryptoname: "Commodity Ad Network"; value: "CDX"} - ListElement { cryptoname: "FoodCoin"; value: "FOOD"} - ListElement { cryptoname: "Votecoin"; value: "VOT"} - ListElement { cryptoname: "Uquid Coin"; value: "UQC"} - ListElement { cryptoname: "EthLend"; value: "LEND"} - ListElement { cryptoname: "Sether"; value: "SETH"} - ListElement { cryptoname: "Tio Tour Guides"; value: "TIO*"} - ListElement { cryptoname: "SHIELD"; value: "XSH"} - ListElement { cryptoname: "BitCAD"; value: "BCD*"} - ListElement { cryptoname: "BridgeCoin"; value: "BCO"} - ListElement { cryptoname: "Desire"; value: "DSR"} - ListElement { cryptoname: "BitDegree"; value: "BDG"} - ListElement { cryptoname: "onG.social"; value: "ONG"} - ListElement { cryptoname: "Oyster Pearl"; value: "PRL"} - ListElement { cryptoname: "BTCMoon"; value: "BTCM"} - ListElement { cryptoname: "Ethereum Black"; value: "ETBT"} - ListElement { cryptoname: "ZCashGOLD"; value: "ZCG"} - ListElement { cryptoname: "Mutual Coin"; value: "MUT"} - ListElement { cryptoname: "Aion"; value: "AION"} - ListElement { cryptoname: "Kittehcoin"; value: "MEOW"} - ListElement { cryptoname: "Divi"; value: "DIVX"} - ListElement { cryptoname: "Cash & Back Coin"; value: "CNBC"} - ListElement { cryptoname: "RChain"; value: "RHOC"} - ListElement { cryptoname: " Arcade City"; value: "ARC*"} - ListElement { cryptoname: "UltraNote"; value: "XUN"} - ListElement { cryptoname: "RAFL"; value: "RFL"} - ListElement { cryptoname: "CoinFi"; value: "COFI"} - ListElement { cryptoname: "ELTCOIN"; value: "ELTCOIN"} - ListElement { cryptoname: "Gold Reward Token"; value: "GRX"} - ListElement { cryptoname: "Neurotoken"; value: "NTK"} - ListElement { cryptoname: "Eroscoin"; value: "ERO"} - ListElement { cryptoname: "Relex"; value: "RLX"} - ListElement { cryptoname: "People"; value: "MAN"} - ListElement { cryptoname: "CryptoWave"; value: "CWV"} - ListElement { cryptoname: "Achain"; value: "ACT*"} - ListElement { cryptoname: "Neuro"; value: "NRO"} - ListElement { cryptoname: "Social Send"; value: "SEND"} - ListElement { cryptoname: "GlobalToken"; value: "GLT"} - ListElement { cryptoname: "X8Currency"; value: "X8X"} - ListElement { cryptoname: "BitCoal"; value: "COAL"} - ListElement { cryptoname: "DaxxCoin"; value: "DAXX"} - ListElement { cryptoname: "Bulwark"; value: "BWK"} - ListElement { cryptoname: "Monero Gold"; value: "XMRG"} - ListElement { cryptoname: "EthereumBitcoin"; value: "BTCE"} - ListElement { cryptoname: "FlypMe"; value: "FYP"} - ListElement { cryptoname: "BoxyCoin"; value: "BOXY"} - ListElement { cryptoname: "ETHGAS"; value: "EGAS"} - ListElement { cryptoname: "Digital Assets Power Play"; value: "DPP"} - ListElement { cryptoname: "Adbank"; value: "ADB"} - ListElement { cryptoname: "TargetCoin"; value: "TGT"} - ListElement { cryptoname: "BMChain"; value: "BMT"} - ListElement { cryptoname: "Biocoin"; value: "BIO"} - ListElement { cryptoname: "ModulTrade"; value: "MTRC"} - ListElement { cryptoname: "BTC Lite"; value: "BTCL"} - ListElement { cryptoname: "PeepCoin"; value: "PCN"} - ListElement { cryptoname: "Bitcoin Revolution"; value: "RBTC"} - ListElement { cryptoname: "Verify"; value: "CRED"} - ListElement { cryptoname: "Super Bitcoin"; value: "SBTC"} - ListElement { cryptoname: "GIFTO"; value: "GTO"} - ListElement { cryptoname: "Time New Bank"; value: "TNB"} - ListElement { cryptoname: "CHIPS"; value: "CHIPS"} - ListElement { cryptoname: "Media Network Coin"; value: "MNT*"} - ListElement { cryptoname: "SmartMesh"; value: "SMT*"} - ListElement { cryptoname: "GermanCoin"; value: "GER"} - ListElement { cryptoname: "LiteCoin Ultra"; value: "LTCU"} - ListElement { cryptoname: "MobileGo"; value: "EMGO"} - ListElement { cryptoname: "Bitair"; value: "BTCA"} - ListElement { cryptoname: "HOQU"; value: "HQX"} - ListElement { cryptoname: "EthereumFog"; value: "ETF"} - ListElement { cryptoname: "BitcoinX"; value: "BCX*"} - ListElement { cryptoname: "Luxmi Coin"; value: "LUX**"} - ListElement { cryptoname: "BannerCoin"; value: "BCOIN"} - ListElement { cryptoname: "Bounty0x"; value: "BNTY"} - ListElement { cryptoname: "Bread token"; value: "BRD"} - ListElement { cryptoname: "Hawala.Today"; value: "HAT"} - ListElement { cryptoname: "aelf"; value: "ELF"} - ListElement { cryptoname: "Crypto-X"; value: "CWX"} - ListElement { cryptoname: "DeepBrain Chain"; value: "DBC"} - ListElement { cryptoname: "Zen Protocol"; value: "ZEN*"} - ListElement { cryptoname: "PopularCoin"; value: "POP"} - ListElement { cryptoname: "PhantomX"; value: "PNX"} - ListElement { cryptoname: "BitAsean"; value: "BAS"} - ListElement { cryptoname: "United Traders Token"; value: "UTT"} - ListElement { cryptoname: "HomeBlockCoin"; value: "HBC"} - ListElement { cryptoname: "MicroMoney"; value: "AMM"} - ListElement { cryptoname: "DavorCoin"; value: "DAV"} - ListElement { cryptoname: "Copico"; value: "XCPO"} - ListElement { cryptoname: "Guaranteed Entrance Token"; value: "GET"} - ListElement { cryptoname: "Index ERC20"; value: "ERC20"} - ListElement { cryptoname: "IoT Chain"; value: "ITC"} - ListElement { cryptoname: "HTML Coin"; value: "HTML"} - ListElement { cryptoname: "Numus"; value: "NMS"} - ListElement { cryptoname: "Photon"; value: "PHO"} - ListElement { cryptoname: "ExtraCredit"; value: "XTRA"} - ListElement { cryptoname: "Network Token"; value: "NTWK"} - ListElement { cryptoname: "Sucre"; value: "SUCR"} - ListElement { cryptoname: "SmartBillions"; value: "SMART*"} - ListElement { cryptoname: "Genaro Network"; value: "GNX"} - ListElement { cryptoname: "Nebulas"; value: "NAS"} - ListElement { cryptoname: "Accolade"; value: "ACCO"} - ListElement { cryptoname: "Bytether "; value: "BTH"} - ListElement { cryptoname: "TokugawaCoin"; value: "TOK"} - ListElement { cryptoname: "eREAL"; value: "EREAL"} - ListElement { cryptoname: "CompuCoin"; value: "CPN"} - ListElement { cryptoname: "BitSerial"; value: "BTE*"} - ListElement { cryptoname: "OmiseGO Classic"; value: "OMGC"} - ListElement { cryptoname: "QubitCoin"; value: "Q2C"} - ListElement { cryptoname: "Bloom Token"; value: "BLT"} - ListElement { cryptoname: "SportyFi"; value: "SPF"} - ListElement { cryptoname: "TokenDesk"; value: "TDS"} - ListElement { cryptoname: "Galactrum"; value: "ORE"} - ListElement { cryptoname: "Sparks"; value: "SPK"} - ListElement { cryptoname: "GoaCoin"; value: "GOA"} - ListElement { cryptoname: "Fuloos Coin"; value: "FLS"} - ListElement { cryptoname: "GunCoin"; value: "GUN"} - ListElement { cryptoname: "DFSCoin"; value: "DFS"} - ListElement { cryptoname: "PolisPay"; value: "POLIS"} - ListElement { cryptoname: "FireLotto"; value: "FLOT"} - ListElement { cryptoname: "CoinLancer"; value: "CL"} - ListElement { cryptoname: "StrongHands"; value: "SHND"} - ListElement { cryptoname: "ArubaCoin"; value: "AUA"} - ListElement { cryptoname: "SagaCoin"; value: "SAGA"} - ListElement { cryptoname: "Energo"; value: "TSL"} - ListElement { cryptoname: "IrishCoin"; value: "IRL"} - ListElement { cryptoname: "Trollcoin"; value: "TROLL"} - ListElement { cryptoname: "Force Coin"; value: "FOR"} - ListElement { cryptoname: "Sugar Exchange"; value: "SGR"} - ListElement { cryptoname: "Jetcoin"; value: "JET"} - ListElement { cryptoname: "MediShares"; value: "MDS"} - ListElement { cryptoname: "Litecoin Plus"; value: "LCP"} - ListElement { cryptoname: "Game"; value: "GTC"} - ListElement { cryptoname: "iEthereum"; value: "IETH"} - ListElement { cryptoname: "TheGCCcoin"; value: "GCC*"} - ListElement { cryptoname: "Sanderon"; value: "SDRN"} - ListElement { cryptoname: "Kubera Coin"; value: "KBR"} - ListElement { cryptoname: "High Performance Blockchain"; value: "HPB"} - ListElement { cryptoname: "Monkey Project"; value: "MONK"} - ListElement { cryptoname: "Jinn"; value: "JINN"} - ListElement { cryptoname: "Setcoin"; value: "SET"} - ListElement { cryptoname: "MagnaCoin"; value: "MGN"} - ListElement { cryptoname: "KZCash"; value: "KZC"} - ListElement { cryptoname: "Gainer"; value: "GNR"} - ListElement { cryptoname: "BrightCoin"; value: "BRC"} - ListElement { cryptoname: "Hive"; value: "HIVE"} - ListElement { cryptoname: "GameX"; value: "GX"} - ListElement { cryptoname: "EtherLite"; value: "ETL"} - ListElement { cryptoname: "Telcoin"; value: "TEL"} - ListElement { cryptoname: "BinaryCoin"; value: "BRC*"} - ListElement { cryptoname: "Zap"; value: "ZAP"} - ListElement { cryptoname: "AI Doctor"; value: "AIDOC"} - ListElement { cryptoname: "LendConnect"; value: "LCT"} - ListElement { cryptoname: "EBCoin"; value: "EBC"} - ListElement { cryptoname: "Internet Node Token"; value: "INT"} - ListElement { cryptoname: "Steneum Coin"; value: "STN"} - ListElement { cryptoname: "Pioneer Coin"; value: "PCOIN"} - ListElement { cryptoname: "EtherDelta"; value: "EDT"} - ListElement { cryptoname: "Cyder Coin"; value: "CYDER"} - ListElement { cryptoname: "EchoLink"; value: "EKO"} - ListElement { cryptoname: "Bottos"; value: "BTO"} - ListElement { cryptoname: "ArbitrageCT"; value: "ARCT"} - ListElement { cryptoname: "ImmVRse"; value: "IMV"} - ListElement { cryptoname: "Aurora"; value: "AURA"} - ListElement { cryptoname: "IndaHash"; value: "IDH"} - ListElement { cryptoname: "CommerceBlock Token"; value: "CBT"} - ListElement { cryptoname: "Interzone"; value: "ITZ"} - ListElement { cryptoname: "Black Pearl Coin"; value: "XBP"} - ListElement { cryptoname: "EXRNchain"; value: "EXRN"} - ListElement { cryptoname: "SingularityNET"; value: "AGI"} - ListElement { cryptoname: "Sigil"; value: "SGL"} - ListElement { cryptoname: "Trinity Network Credit"; value: "TNC"} - ListElement { cryptoname: "Data"; value: "DTA"} - ListElement { cryptoname: "CarVertical"; value: "CV"} - ListElement { cryptoname: "Theta"; value: "THETA"} - ListElement { cryptoname: "Measurable Data Token "; value: "MDT*"} - ListElement { cryptoname: "Purpose"; value: "PRPS"} - ListElement { cryptoname: "Decentralized Universal Basic Income"; value: "DUBI"} - ListElement { cryptoname: "Blockport"; value: "BPT"} - ListElement { cryptoname: "IOS token"; value: "IOST"} - ListElement { cryptoname: "TokenClub "; value: "TCT"} - ListElement { cryptoname: "OriginTrail"; value: "TRAC"} - ListElement { cryptoname: "Olympus Labs"; value: "MOT"} - ListElement { cryptoname: "Zilliqa"; value: "ZIL"} - ListElement { cryptoname: "Ethorse "; value: "HORSE"} - ListElement { cryptoname: "QunQun"; value: "QUN"} - ListElement { cryptoname: "Accelerator Network"; value: "ACC*"} - ListElement { cryptoname: "SwftCoin"; value: "SWFTC"} - ListElement { cryptoname: "Sentinel"; value: "SENT"} - ListElement { cryptoname: "InsurePal"; value: "IPL"} - ListElement { cryptoname: "OP Coin"; value: "OPC"} - ListElement { cryptoname: "Safinus"; value: "SAF"} - ListElement { cryptoname: "Shacoin"; value: "SHA"} - ListElement { cryptoname: "Pylon Network"; value: "PYLNT"} - ListElement { cryptoname: "Garlicoin"; value: "GRLC"} - ListElement { cryptoname: "Devery"; value: "EVE"} - ListElement { cryptoname: "Yee"; value: "YEE"} - ListElement { cryptoname: "Global Tour Coin"; value: "GTC*"} - ListElement { cryptoname: "BitcoinWhite"; value: "BTW"} - ListElement { cryptoname: "aXpire"; value: "AXP"} - ListElement { cryptoname: "Fortuna"; value: "FOTA"} - ListElement { cryptoname: "CPChain"; value: "CPC*"} - ListElement { cryptoname: "Zeepin"; value: "ZPT"} - ListElement { cryptoname: "Croat"; value: "CROAT"} - ListElement { cryptoname: "RefToken"; value: "REF"} - ListElement { cryptoname: "SPECTRE Dividend Token"; value: "SXDT"} - ListElement { cryptoname: "SPECTRE Utility Token"; value: "SXUT"} - ListElement { cryptoname: "FairGame"; value: "FAIR*"} - ListElement { cryptoname: "Valorbit"; value: "VAL"} - ListElement { cryptoname: "Matrix AI Network"; value: "MAN*"} - ListElement { cryptoname: "BlockCDN "; value: "BCDN"} - ListElement { cryptoname: "STK Token"; value: "STK"} - ListElement { cryptoname: "Mosaic Network"; value: "MZX"} - ListElement { cryptoname: "Polymath Network"; value: "POLY*"} - ListElement { cryptoname: "Tao"; value: "XTO"} - ListElement { cryptoname: "Ruff"; value: "RUFF"} - ListElement { cryptoname: "Elastos"; value: "ELA"} - ListElement { cryptoname: "TokenPay"; value: "TPAY*"} - ListElement { cryptoname: "CargoX"; value: "CXO"} - ListElement { cryptoname: "Strategic Investments in Significant Areas"; value: "SISA"} - ListElement { cryptoname: "eBit"; value: "EBIT"} - ListElement { cryptoname: "Iungo"; value: "ING"} - ListElement { cryptoname: "LHCoin"; value: "LHC"} - ListElement { cryptoname: "Bluzelle"; value: "BLZ"} - ListElement { cryptoname: "Halal"; value: "HALAL"} - ListElement { cryptoname: "SwissBorg"; value: "CHSB"} - ListElement { cryptoname: "1717 Masonic Commemorative Token"; value: "MCT"} - ListElement { cryptoname: "Crypto Wisdom Coin"; value: "CWIS"} - ListElement { cryptoname: "My Big Coin"; value: "MBC"} - ListElement { cryptoname: "Medicalchain"; value: "MTN*"} - ListElement { cryptoname: "WorldBTC"; value: "WBTC"} - ListElement { cryptoname: "THEKEY Token"; value: "TKY"} - ListElement { cryptoname: "Pareto Network Token"; value: "PARETO"} - ListElement { cryptoname: "Bee Token"; value: "BEE"} - ListElement { cryptoname: "MUNcoin"; value: "MUN"} - ListElement { cryptoname: "Tigereum"; value: "TIG"} - ListElement { cryptoname: "DataWallet"; value: "DXT"} - ListElement { cryptoname: "Unified Society USDEX"; value: "USX"} - ListElement { cryptoname: "Bitcoin Atom"; value: "BCA"} - ListElement { cryptoname: "Fusion"; value: "FSN*"} - ListElement { cryptoname: "Block Array"; value: "ARY"} - ListElement { cryptoname: "BunnyCoin"; value: "BUN"} - ListElement { cryptoname: "Trident"; value: "TRDT"} - ListElement { cryptoname: "Bounty"; value: "XBTY"} - ListElement { cryptoname: "JesusCoin"; value: "JC"} - ListElement { cryptoname: "Shekel"; value: "JEW"} - ListElement { cryptoname: "Credence Coin"; value: "CRDNC"} - ListElement { cryptoname: "Verge"; value: "XVG"} - ListElement { cryptoname: "Tap Project"; value: "TTT"} - ListElement { cryptoname: "Ink"; value: "INK"} - ListElement { cryptoname: "Ethfinex Nectar Token"; value: "NEC*"} - ListElement { cryptoname: "WePower"; value: "WPR"} - ListElement { cryptoname: "DivotyCoin"; value: "DTC**"} - ListElement { cryptoname: "DRP Utility"; value: "DRPU"} - ListElement { cryptoname: "DADI"; value: "DADI"} - ListElement { cryptoname: "Halal-Chain"; value: "HLC"} - ListElement { cryptoname: "MediBloc"; value: "MED*"} - ListElement { cryptoname: "Bodhi"; value: "BOT"} - ListElement { cryptoname: "Qbao"; value: "QBT*"} - ListElement { cryptoname: "Karma"; value: "KRM"} - ListElement { cryptoname: "Bitcoin Candy"; value: "CDY"} - ListElement { cryptoname: "ShareChain"; value: "SSS"} - ListElement { cryptoname: "Scry.info"; value: "DDD"} - ListElement { cryptoname: "BitcoinFile"; value: "BIFI"} - ListElement { cryptoname: "Blockchain Traded Fund"; value: "BTF"} - ListElement { cryptoname: "IPChain"; value: "IPC*"} - ListElement { cryptoname: "RealChain"; value: "RCT"} - ListElement { cryptoname: "ShowCoin"; value: "SHOW"} - ListElement { cryptoname: "StarChain"; value: "STC"} - ListElement { cryptoname: "Data Trading"; value: "DTT*"} - ListElement { cryptoname: "Storiqa Token"; value: "STQ"} - ListElement { cryptoname: "Tokenomy"; value: "TEN"} - ListElement { cryptoname: "BetterBetting"; value: "BETR"} - ListElement { cryptoname: "Crypterium"; value: "CRPT"} - ListElement { cryptoname: "Local World Forwarders"; value: "LWF"} - ListElement { cryptoname: "Debitum Token"; value: "DEB"} - ListElement { cryptoname: "ALTcoin"; value: "ALT"} - ListElement { cryptoname: "Travelflex"; value: "TRF"} - ListElement { cryptoname: "LitecoinCash"; value: "LCC"} - ListElement { cryptoname: "NYXCOIN"; value: "NYX"} - ListElement { cryptoname: "RED MegaWatt"; value: "MWAT"} - ListElement { cryptoname: "ZayedCoin"; value: "ZYD"} - ListElement { cryptoname: "Petro"; value: "PTR"} - ListElement { cryptoname: "eBitcoin"; value: "EBTC"} - ListElement { cryptoname: "BitFlip"; value: "FLIP"} - ListElement { cryptoname: "Universa"; value: "UTN"} - ListElement { cryptoname: "Intelligence Quotient Benefit"; value: "IQB"} - ListElement { cryptoname: "World Crypto Gold"; value: "WCG"} - ListElement { cryptoname: "Monoeci"; value: "XMCC"} - ListElement { cryptoname: "CryCash"; value: "CRC**"} - ListElement { cryptoname: "Purpose Coin"; value: "HLP"} - ListElement { cryptoname: "EQUAL"; value: "EQL"} - ListElement { cryptoname: "Vulcano"; value: "VULC"} - ListElement { cryptoname: "SpainCoin"; value: "SPA"} - ListElement { cryptoname: "UniversalRoyalCoin"; value: "UNRC"} - ListElement { cryptoname: "Tokyo Coin"; value: "TOKC"} - ListElement { cryptoname: "SexCoin"; value: "SXC"} - ListElement { cryptoname: "Heiss Shares"; value: "HYS"} - ListElement { cryptoname: "LiteCoinW Plus"; value: "LCWP"} - ListElement { cryptoname: "Bitcoin Royal"; value: "BCR*"} - ListElement { cryptoname: "SpaceChain"; value: "SPC*"} - ListElement { cryptoname: "Goodomy"; value: "GOOD*"} - ListElement { cryptoname: "All Sports Coin"; value: "SOC"} - ListElement { cryptoname: "Tidex Token"; value: "TDX"} - ListElement { cryptoname: "MultiGames"; value: "MLT"} - ListElement { cryptoname: "Vestarin"; value: "VST"} - ListElement { cryptoname: "Republic Token"; value: "REN"} - ListElement { cryptoname: "BABB"; value: "BAX"} - ListElement { cryptoname: "Specie"; value: "SPX*"} - ListElement { cryptoname: "BashCoin"; value: "BASHC"} - ListElement { cryptoname: "DigiFel"; value: "DIGIF"} - ListElement { cryptoname: "Cerberus"; value: "CBS"} - ListElement { cryptoname: "fidentiaX"; value: "FDX"} - ListElement { cryptoname: "COPYTRACK"; value: "CPY"} - ListElement { cryptoname: "Experty"; value: "EXY"} - ListElement { cryptoname: "Datarius"; value: "DTRC"} - ListElement { cryptoname: "Dai"; value: "DAI"} - ListElement { cryptoname: "Nucleus Vision"; value: "NCASH"} - ListElement { cryptoname: "Crypto Improvement Fund"; value: "CIF"} - ListElement { cryptoname: "Decentraland"; value: "MANA"} - ListElement { cryptoname: "TurtleCoin"; value: "TRTL"} - ListElement { cryptoname: "Robin8 Profile Utility Token"; value: "PUT*"} - ListElement { cryptoname: "Vanywhere"; value: "VANY"} - ListElement { cryptoname: "LottoCoin"; value: "LOT"} - ListElement { cryptoname: "LeafCoin"; value: "LEAF"} - ListElement { cryptoname: "Compound Coin"; value: "COMP"} - ListElement { cryptoname: "Cypherfunks Coin"; value: "FUNK"} - ListElement { cryptoname: "Sociall"; value: "SCL"} - ListElement { cryptoname: "TeslaCoin"; value: "TES"} - ListElement { cryptoname: "ChanCoin"; value: "CHAN"} - ListElement { cryptoname: "TE-FOOD"; value: "TFD"} - ListElement { cryptoname: "Zoin"; value: "ZOI"} - ListElement { cryptoname: "BiboxCoin"; value: "BIX"} - ListElement { cryptoname: "Refereum"; value: "RFR"} - ListElement { cryptoname: "DigiMoney"; value: "DGM"} - ListElement { cryptoname: "Bitcoin Hush"; value: "BTCH"} - ListElement { cryptoname: "CryptoCarbon"; value: "CCRB"} - ListElement { cryptoname: "Pluton"; value: "PLU"} - ListElement { cryptoname: "NagaCoin"; value: "NGC"} - ListElement { cryptoname: "Credits"; value: "CS*"} - ListElement { cryptoname: "RoyalCoin"; value: "ROYAL"} - ListElement { cryptoname: "Degas Coin"; value: "DEA"} - ListElement { cryptoname: "Ravencoin"; value: "RVN"} - ListElement { cryptoname: "FundRequest"; value: "FND"} - ListElement { cryptoname: "Lisk"; value: "LSK"} - ListElement { cryptoname: "VV Coin"; value: "VVI"} - ListElement { cryptoname: "NEO"; value: "NEO"} - ListElement { cryptoname: "Crystal Clear Token "; value: "CCT"} - ListElement { cryptoname: "CryptoSpots"; value: "CS"} - ListElement { cryptoname: "Swarm Fund"; value: "SWM"} - ListElement { cryptoname: "Props"; value: "PROPS"} - ListElement { cryptoname: "Bitsense"; value: "BINS"} - ListElement { cryptoname: "PokerCoin"; value: "POKER"} - ListElement { cryptoname: "Axys"; value: "AXYS"} - ListElement { cryptoname: "EvenCoin"; value: "EVN*"} - ListElement { cryptoname: "Bold"; value: "BOLD"} - ListElement { cryptoname: "Extensive Coin"; value: "EXTN"} - ListElement { cryptoname: "ETH Share"; value: "ETS"} - ListElement { cryptoname: "LIpcoin"; value: "LIPC"} - ListElement { cryptoname: "HELL COIN"; value: "HELL"} - ListElement { cryptoname: "Alphacat"; value: "ACAT"} - ListElement { cryptoname: "CO2 Token"; value: "CO2"} - ListElement { cryptoname: "Rock Token"; value: "RKT"} - ListElement { cryptoname: "Golem Network Token"; value: "GNT"} - ListElement { cryptoname: "Magnet"; value: "MAG"} - ListElement { cryptoname: "Dignity"; value: "DIG"} - ListElement { cryptoname: "Exscudo"; value: "EON"} - ListElement { cryptoname: "Velox"; value: "VLX"} - ListElement { cryptoname: "Ontology"; value: "ONT"} - ListElement { cryptoname: "CasinoCoin"; value: "CSC"} - ListElement { cryptoname: "Ink Protocol"; value: "XNK"} - ListElement { cryptoname: "Curium"; value: "CRU"} - ListElement { cryptoname: "PayFair"; value: "PFR"} - ListElement { cryptoname: "Elicoin"; value: "ELI*"} - ListElement { cryptoname: "Gilgam"; value: "GGS"} - ListElement { cryptoname: "Bezop"; value: "BEZ"} - ListElement { cryptoname: "ENTER COIN"; value: "ENTRC"} - ListElement { cryptoname: "PesetaCoin"; value: "PTC"} - ListElement { cryptoname: "Graft Blockchain"; value: "GRFT"} - ListElement { cryptoname: "Exchange Union"; value: "XUC"} - ListElement { cryptoname: "Advanced Browsing Token"; value: "ABT*"} - ListElement { cryptoname: "ArcBlock"; value: "ABT"} - ListElement { cryptoname: "REMME"; value: "REM"} - ListElement { cryptoname: "STEX"; value: "STEX"} - ListElement { cryptoname: "Action Coin"; value: "ACTN"} - ListElement { cryptoname: "Blox"; value: "CDT"} - ListElement { cryptoname: "eXMR Monero"; value: "EXMR"} - ListElement { cryptoname: "Useless Eth Token Lite"; value: "UETL"} - ListElement { cryptoname: "Ankorus Token"; value: "ANK"} - ListElement { cryptoname: "Ripple"; value: "XRP"} - ListElement { cryptoname: "Litecoin"; value: "LTC"} - ListElement { cryptoname: "VapersCoin"; value: "VPRC"} - ListElement { cryptoname: "Siacoin"; value: "SC"} - ListElement { cryptoname: "TROPTIONS"; value: "XTROPTIONS"} - ListElement { cryptoname: "BitcoinGo"; value: "BTCGO"} - ListElement { cryptoname: "Pegascoin"; value: "PGC"} - ListElement { cryptoname: "NeedleCoin"; value: "NDC*"} - ListElement { cryptoname: "Internet of People"; value: "IOP"} - ListElement { cryptoname: "Castle"; value: "CSTL"} - ListElement { cryptoname: "Proof Suite Token"; value: "PRFT"} - ListElement { cryptoname: "Dragon Coin"; value: "DRG"} - ListElement { cryptoname: "BitFlux"; value: "FLX*"} - ListElement { cryptoname: "Maggie Token"; value: "MAG**"} - ListElement { cryptoname: "ZenCash"; value: "ZEN"} - ListElement { cryptoname: "Titanium BAR"; value: "TBAR"} - ListElement { cryptoname: "Interplanetary Broadcast Coin"; value: "IPBC"} - ListElement { cryptoname: "Cube"; value: "AUTO"} - ListElement { cryptoname: "Cryptonetix"; value: "CIX"} - ListElement { cryptoname: "Charg Coin"; value: "CHG"} - ListElement { cryptoname: "Social Media Market"; value: "SMT"} - ListElement { cryptoname: "PARKGENE"; value: "GENE"} - ListElement { cryptoname: "USCoin"; value: "USDC"} - ListElement { cryptoname: "Havven"; value: "HAV"} - ListElement { cryptoname: "W3Coin"; value: "W3C"} - ListElement { cryptoname: "Dinero"; value: "DIN"} - ListElement { cryptoname: "Kind Ads"; value: "KIND"} - ListElement { cryptoname: "CoinPoker Token"; value: "CHP"} - ListElement { cryptoname: "Poseidon"; value: "PSD"} - ListElement { cryptoname: "JET8"; value: "J8T"} - ListElement { cryptoname: "Skeincoin"; value: "SKC"} - ListElement { cryptoname: "Vertcoin"; value: "VTC"} - ListElement { cryptoname: "Lelecoin"; value: "LELE"} - ListElement { cryptoname: "Cardano"; value: "ADA"} - ListElement { cryptoname: "FaucetCoin"; value: "DROP*"} - ListElement { cryptoname: "Emercoin"; value: "EMC"} - ListElement { cryptoname: "Skycoin"; value: "SKY"} - ListElement { cryptoname: "BROTHER"; value: "BRAT"} - ListElement { cryptoname: "ShipChain"; value: "SHIP"} - ListElement { cryptoname: "Denaro"; value: "DNO"} - ListElement { cryptoname: "Bancor Network Token"; value: "BNT"} - ListElement { cryptoname: "NewYorkCoin"; value: "NYC"} - ListElement { cryptoname: "JackPotCoin"; value: "JPC*"} - ListElement { cryptoname: "Legolas Exchange"; value: "LGO"} - ListElement { cryptoname: "Follow Coin"; value: "FLLW"} - ListElement { cryptoname: "Project J"; value: "JTX"} - ListElement { cryptoname: "Akroma"; value: "AKA"} - ListElement { cryptoname: "Dropil"; value: "DROP"} - ListElement { cryptoname: "FriendshipCoin"; value: "FSC"} - ListElement { cryptoname: "LuckyBlocks"; value: "LUCKY"} - ListElement { cryptoname: "VEGA"; value: "VEGA"} - ListElement { cryptoname: "Eternal Coin"; value: "XEC"} - ListElement { cryptoname: "I-House Token"; value: "IHT"} - ListElement { cryptoname: "LaLa World"; value: "LALA"} - ListElement { cryptoname: "CoinMeet"; value: "MEE"} - ListElement { cryptoname: "eProxy"; value: "ePRX"} - ListElement { cryptoname: "Organic Token"; value: "ORGT"} - ListElement { cryptoname: "Loom Network"; value: "LOOM"} - ListElement { cryptoname: "Reality Clash"; value: "RCC"} - ListElement { cryptoname: "MachineCoin"; value: "MAC"} - ListElement { cryptoname: "Goldea"; value: "GEA"} - ListElement { cryptoname: "Telegram Open Network"; value: "GRAM"} - ListElement { cryptoname: "Electrify.Asia"; value: "ELEC"} - ListElement { cryptoname: "Hi Mutual Society"; value: "HMC"} - ListElement { cryptoname: "Rupee"; value: "RUP"} - ListElement { cryptoname: "Vice Industry Token"; value: "VIT"} - ListElement { cryptoname: "Viewly"; value: "VIEW"} - ListElement { cryptoname: "Bolenum"; value: "BLN*"} - ListElement { cryptoname: "DigitalCash"; value: "DASH"} - ListElement { cryptoname: "Cosmo"; value: "CMOS"} - ListElement { cryptoname: "Seraph"; value: "SERA"} - ListElement { cryptoname: "Pigeoncoin"; value: "PGN"} - ListElement { cryptoname: "TulipCoin"; value: "TLP"} - ListElement { cryptoname: "Genstake"; value: "GEN*"} - ListElement { cryptoname: "Bitspace"; value: "BSX"} - ListElement { cryptoname: "AfterEther"; value: "AET"} - ListElement { cryptoname: "BitcoinEX"; value: "BTCE*"} - ListElement { cryptoname: "True USD"; value: "TUSD"} - ListElement { cryptoname: "Stakenet"; value: "XSN (1)"} - ListElement { cryptoname: "Pundi X"; value: "NPXS"} - ListElement { cryptoname: "Lizus Payment"; value: "LIZ"} - ListElement { cryptoname: "Kalkulus"; value: "KLKS"} - ListElement { cryptoname: "IP Exchange"; value: "IPSX"} - ListElement { cryptoname: "TravelChain"; value: "TT"} - ListElement { cryptoname: "FluzFluz"; value: "FLUZ"} - ListElement { cryptoname: "Ellaism"; value: "ELLA"} - ListElement { cryptoname: "CryptoBullion"; value: "CBX"} - ListElement { cryptoname: "Hacken"; value: "HKN"} - ListElement { cryptoname: "Authoreon"; value: "AUN"} - ListElement { cryptoname: "Education Ecosystem"; value: "LEDU"} - ListElement { cryptoname: "ZeroState"; value: "ZSC*"} - ListElement { cryptoname: "MacronCoin"; value: "MCRN"} - ListElement { cryptoname: "Digiwage"; value: "WAGE"} - ListElement { cryptoname: "Gostcoin"; value: "GST"} - ListElement { cryptoname: "Passive Coin"; value: "PAS"} - ListElement { cryptoname: "FARM Coin"; value: "FARM"} - ListElement { cryptoname: "Next.exchange Token"; value: "NEXT"} - ListElement { cryptoname: "BitRent"; value: "RNTB"} - ListElement { cryptoname: "ClearCoin"; value: "CLR*"} - ListElement { cryptoname: "BlitzPredict"; value: "XBP*"} - ListElement { cryptoname: "Insights Network"; value: "INSTAR"} - ListElement { cryptoname: "FinTab"; value: "FNTB"} - ListElement { cryptoname: "Pirate Blocks"; value: "SKULL"} - ListElement { cryptoname: "CryptopiaFeeShares"; value: "CEFS"} - ListElement { cryptoname: "Mineable Token"; value: "MINT*"} - ListElement { cryptoname: "Infinity Economics"; value: "XIN"} - ListElement { cryptoname: "B2BX"; value: "B2B"} - ListElement { cryptoname: "Scooby coin"; value: "SCOOBY"} - ListElement { cryptoname: "Ravelous"; value: "RAVE"} - ListElement { cryptoname: "Niobio Cash"; value: "NBR"} - ListElement { cryptoname: "BBNCOIN"; value: "BBN"} - ListElement { cryptoname: "Banyan Network"; value: "BBN*"} - ListElement { cryptoname: "Lydiancoin"; value: "LDN"} - ListElement { cryptoname: "USOAMIC"; value: "USOAMIC"} - ListElement { cryptoname: "Mithril"; value: "MITH"} - ListElement { cryptoname: "CavatCoin"; value: "CVTC"} - ListElement { cryptoname: "ECC"; value: "ECC"} - ListElement { cryptoname: "Friendz"; value: "FDZ"} - ListElement { cryptoname: "Logarithm"; value: "LGR"} - ListElement { cryptoname: "Bitcoin Scrypt"; value: "BTCS"} - ListElement { cryptoname: "KREDS"; value: "KREDS"} - ListElement { cryptoname: "CoinLion"; value: "LION"} - ListElement { cryptoname: "U.CASH"; value: "UCASH"} - ListElement { cryptoname: "AventCoin"; value: "AVT"} - ListElement { cryptoname: "Stellite"; value: "XTL"} - ListElement { cryptoname: "PacCoin"; value: "$PAC"} - ListElement { cryptoname: "Hurify"; value: "HUR"} - ListElement { cryptoname: "Debit Coin"; value: "DBC*"} - ListElement { cryptoname: "Voltroon"; value: "VTN"} - ListElement { cryptoname: "UC Coin"; value: "UCN"} - ListElement { cryptoname: "Ignition"; value: "IC"} - ListElement { cryptoname: "Briacoin"; value: "BRIA"} - ListElement { cryptoname: "LatiumX"; value: "LATX"} - ListElement { cryptoname: "ROIcoin"; value: "ROI"} - ListElement { cryptoname: "Snowgem"; value: "XSG"} - ListElement { cryptoname: "Neblio"; value: "NEBL"} - ListElement { cryptoname: "Nihilo Coin"; value: "NIHL"} - ListElement { cryptoname: "Polybius"; value: "PLBT"} - ListElement { cryptoname: "PayPro"; value: "PYP"} - ListElement { cryptoname: "PWR Coin"; value: "PWR"} - ListElement { cryptoname: "LeadCoin"; value: "LDC"} - ListElement { cryptoname: "Cappasity"; value: "CAPP"} - ListElement { cryptoname: "B3Coin"; value: "KB3"} - ListElement { cryptoname: "Aidos Kuneen"; value: "ADK"} - ListElement { cryptoname: "Zero"; value: "ZER"} - ListElement { cryptoname: "Reddcoin"; value: "RDD"} - ListElement { cryptoname: "EarthCoin"; value: "EAC"} - ListElement { cryptoname: "Ethereum Premium"; value: "ETHPR"} - ListElement { cryptoname: "MoneyBag"; value: "MNB"} - ListElement { cryptoname: "AchieveCoin"; value: "ACH"} - ListElement { cryptoname: "Bitrolium"; value: "BTL"} - ListElement { cryptoname: "Goal Bonanza"; value: "GOAL"} - ListElement { cryptoname: "EZToken"; value: "EZT"} - ListElement { cryptoname: "Sola"; value: "SOL"} - ListElement { cryptoname: "MedicCoin"; value: "MEDIC"} - ListElement { cryptoname: "Giftcoin"; value: "GFT"} - ListElement { cryptoname: "FIC Network"; value: "eFIC"} - ListElement { cryptoname: "StasyQ"; value: "SQOIN"} - ListElement { cryptoname: "Opporty"; value: "OPP"} - ListElement { cryptoname: "Ethereum Classic"; value: "ETC"} - ListElement { cryptoname: "TraDove"; value: "BBC"} - ListElement { cryptoname: "Cortex"; value: "CTXC"} - ListElement { cryptoname: "Valid"; value: "VLD"} - ListElement { cryptoname: "Interstellar Holdings"; value: "HOLD*"} - ListElement { cryptoname: "Alpenschillling"; value: "ALPS"} - ListElement { cryptoname: "Zelcash"; value: "ZEL"} - ListElement { cryptoname: "Fonero"; value: "FNO"} - ListElement { cryptoname: "NPCcoin"; value: "NPC"} - ListElement { cryptoname: "HireMatch"; value: "HIRE"} - ListElement { cryptoname: "Deviant Coin"; value: "DEV"} - ListElement { cryptoname: "Adelphoi"; value: "ADL"} - ListElement { cryptoname: "Bitcoin Private"; value: "BTCP"} - ListElement { cryptoname: "Abjcoin"; value: "ABJ"} - ListElement { cryptoname: "BiblePay"; value: "BBP"} - ListElement { cryptoname: "TomoChain"; value: "TOMO"} - ListElement { cryptoname: "Bitcoin Green"; value: "BITG"} - ListElement { cryptoname: "Artemine"; value: "ARTE"} - ListElement { cryptoname: "Loyakk Vega"; value: "LYK"} - ListElement { cryptoname: "Revolution VR"; value: "RVR"} - ListElement { cryptoname: "Animecoin"; value: "ANI"} - ListElement { cryptoname: "FOLM coin"; value: "FLM"} - ListElement { cryptoname: "Sentinel Chain"; value: "SENC"} - ListElement { cryptoname: "Ethereum"; value: "ETH"} - ListElement { cryptoname: "Bitcoin Cash / BCC"; value: "BCH"} - ListElement { cryptoname: "Modulum"; value: "MDL*"} - ListElement { cryptoname: "ToTheMoon"; value: "TMT*"} - ListElement { cryptoname: "Scorum"; value: "SCR*"} - ListElement { cryptoname: "Tronix"; value: "TRX"} - ListElement { cryptoname: "Giga Hash"; value: "GHS*"} - ListElement { cryptoname: "Bob Coin"; value: "BOB*"} - ListElement { cryptoname: "SARCoin"; value: "SAR*"} - ListElement { cryptoname: "BitSend"; value: "BSD*"} - ListElement { cryptoname: "PenCoin"; value: "PEN*"} - ListElement { cryptoname: "Steem Backed Dollars"; value: "SBD*"} - ListElement { cryptoname: "SatoshiMadness"; value: "MAD*"} - ListElement { cryptoname: "GoldMint"; value: "MNTP"} - ListElement { cryptoname: "Sharpe Capital"; value: "SHP*"} - ListElement { cryptoname: "Autonio"; value: "NIO*"} - ListElement { cryptoname: "CrowdCoin"; value: "CRC***"} - ListElement { cryptoname: "Hackspace Capital"; value: "HAC"} - ListElement { cryptoname: "CyberMiles"; value: "CMT*"} - ListElement { cryptoname: "EasyToken"; value: "ETKN"} - ListElement { cryptoname: "HashGains"; value: "HGS"} - ListElement { cryptoname: "PolySwarm"; value: "NCT"} - ListElement { cryptoname: "MudraCoin"; value: "MUDRA"} - ListElement { cryptoname: "REBL"; value: "REBL"} - ListElement { cryptoname: "Pallium"; value: "PLMT"} - ListElement { cryptoname: "U Network"; value: "UUU"} - ListElement { cryptoname: "Haven Protocol"; value: "XHV"} - ListElement { cryptoname: "Dock.io"; value: "DOCK"} - ListElement { cryptoname: "XinFin Coin"; value: "XDCE"} - ListElement { cryptoname: "eosDAC"; value: "EOSDAC"} - ListElement { cryptoname: "Worldwide Asset eXchange"; value: "WAX"} - ListElement { cryptoname: "Rupaya"; value: "RUPX"} - ListElement { cryptoname: "Bitcoin Gold"; value: "BTG"} - ListElement { cryptoname: "Huobi Token"; value: "HT"} - ListElement { cryptoname: "ICON Project"; value: "ICX"} - ListElement { cryptoname: "NEM"; value: "XEM"} - ListElement { cryptoname: "Binance Coin"; value: "BNB"} - ListElement { cryptoname: "Signal"; value: "SIG"} - ListElement { cryptoname: "Blockchain Terminal"; value: "BCT"} - ListElement { cryptoname: "NamoCoin"; value: "NAMO"} - ListElement { cryptoname: "Victorium"; value: "VIC"} - ListElement { cryptoname: "CoinMetro"; value: "XCM"} - ListElement { cryptoname: "Bitcoin Interest"; value: "BCI"} - ListElement { cryptoname: "Zealium"; value: "NZL"} - ListElement { cryptoname: "NITRO"; value: "NOX"} - ListElement { cryptoname: "Balkancoin"; value: "BKC"} - ListElement { cryptoname: "FutureWorks"; value: "FTW"} - ListElement { cryptoname: "KWHCoin"; value: "KWH"} - ListElement { cryptoname: "Rapture"; value: "RAP"} - ListElement { cryptoname: "Profit Hunters Coin"; value: "PHC"} - ListElement { cryptoname: "Ethereum Meta"; value: "ETHM"} - ListElement { cryptoname: "NOKU CHF"; value: "CHFN"} - ListElement { cryptoname: "NOKU EUR"; value: "EURN"} - ListElement { cryptoname: "Nxt"; value: "NXT"} - ListElement { cryptoname: "Avalanche"; value: "AVL"} - ListElement { cryptoname: "Bitdaric"; value: "DARX"} - ListElement { cryptoname: "BitBlocks"; value: "BBK"} - ListElement { cryptoname: "Uwezocoin"; value: "UWC"} - ListElement { cryptoname: "Loco"; value: "LOC"} - ListElement { cryptoname: "LockTrip"; value: "LOC*"} - ListElement { cryptoname: "Carebit"; value: "CARE"} - ListElement { cryptoname: "Holo"; value: "HOT"} - ListElement { cryptoname: "T-BOT"; value: "TBT"} - ListElement { cryptoname: "Apex Token"; value: "CPX"} - ListElement { cryptoname: "Monero"; value: "XMR"} - ListElement { cryptoname: "Fuck Token"; value: "FUCK"} - ListElement { cryptoname: "PumaPay"; value: "PMA"} - ListElement { cryptoname: "SuperCoin"; value: "SUPER"} - ListElement { cryptoname: "Fund Platform"; value: "FUND"} - ListElement { cryptoname: "MediChain"; value: "MCU"} - ListElement { cryptoname: "Decentralized Machine Learning"; value: "DML"} - ListElement { cryptoname: "ConnectJob Token"; value: "CJT"} - ListElement { cryptoname: "Wiix"; value: "WIIX"} - ListElement { cryptoname: "Cryptelo Coin"; value: "CRL"} - ListElement { cryptoname: "AMBT Token"; value: "AMBT"} - ListElement { cryptoname: "OKOIN"; value: "OKOIN"} - ListElement { cryptoname: "BF Token"; value: "BFT"} - ListElement { cryptoname: "Atmos"; value: "ATMOS"} - ListElement { cryptoname: "ALAX"; value: "ALX"} - ListElement { cryptoname: "Zupply Token"; value: "ZUP"} - ListElement { cryptoname: "Auctus"; value: "AUC"} - ListElement { cryptoname: "Gems"; value: "GEM"} - ListElement { cryptoname: "BitCar"; value: "BITCAR"} - ListElement { cryptoname: "Hade Token"; value: "HADE"} - ListElement { cryptoname: "DeHedge Token"; value: "DHT"} - ListElement { cryptoname: "ZIX Token"; value: "ZIX"} - ListElement { cryptoname: "JoyToken"; value: "JOY"} - ListElement { cryptoname: "Doc Coin"; value: "DOC"} - ListElement { cryptoname: "Streamr DATAcoin"; value: "DATA"} - ListElement { cryptoname: "Pantos"; value: "PAN"} - ListElement { cryptoname: "VinChain"; value: "VIN"} - ListElement { cryptoname: "Fantasy Cash"; value: "XFT"} - ListElement { cryptoname: "FedoraCoin"; value: "TIPS"} - ListElement { cryptoname: "Midex"; value: "MDX"} - ListElement { cryptoname: "iOlite"; value: "ILT"} - ListElement { cryptoname: "Spend"; value: "SPEND"} - ListElement { cryptoname: "GXChain"; value: "GXS"} - ListElement { cryptoname: "RootProject"; value: "ROOTS"} - ListElement { cryptoname: "On.Live"; value: "ONL"} - ListElement { cryptoname: "Eligma"; value: "ELI"} - ListElement { cryptoname: "Tokenbox"; value: "TBX"} - ListElement { cryptoname: "Luckbox"; value: "LCK"} - ListElement { cryptoname: "Signals Network"; value: "SGN"} - ListElement { cryptoname: "CashBagCoin"; value: "CBC"} - ListElement { cryptoname: "Fox Trading"; value: "FOXT"} - ListElement { cryptoname: "Knowledge "; value: "KNW"} - ListElement { cryptoname: "Eticket4"; value: "ET4"} - ListElement { cryptoname: "Penta"; value: "PNT"} - ListElement { cryptoname: "WCoin"; value: "WIN"} - ListElement { cryptoname: "Eristica"; value: "ERT*"} - ListElement { cryptoname: "Charm Coin"; value: "CHARM"} - ListElement { cryptoname: "Repux"; value: "REPUX"} - ListElement { cryptoname: "Healthureum"; value: "HHEM"} - ListElement { cryptoname: "BelugaPay"; value: "BBI"} - ListElement { cryptoname: "Proton"; value: "PROTON"} - ListElement { cryptoname: "Ar.cash"; value: "AR*"} - ListElement { cryptoname: "Cryptoreal"; value: "CRS"} - ListElement { cryptoname: "Dero"; value: "DERO"} - ListElement { cryptoname: "PROVER"; value: "PF"} - ListElement { cryptoname: "Galaxy eSolutions"; value: "GES"} - ListElement { cryptoname: "iDealCash"; value: "DEAL"} - ListElement { cryptoname: "Forty Seven Bank"; value: "FSBT"} - ListElement { cryptoname: "Jumpcoin"; value: "JUMP"} - ListElement { cryptoname: "Waves"; value: "WAVES"} - ListElement { cryptoname: "NaviAddress"; value: "NAVI"} - ListElement { cryptoname: "Traxia Membership Token"; value: "TMT**"} - ListElement { cryptoname: "Gulden"; value: "NLG"} - ListElement { cryptoname: "NEXO"; value: "NEXO"} - ListElement { cryptoname: "Sharder"; value: "SS"} - ListElement { cryptoname: "Infinex"; value: "IFX"} - ListElement { cryptoname: "Kryll"; value: "KRL"} - ListElement { cryptoname: "NOKU Master token"; value: "NOKU"} - ListElement { cryptoname: "Zebi Coin"; value: "ZCO"} - ListElement { cryptoname: "CryptoLEU"; value: "LEU"} - ListElement { cryptoname: "The EFFECT Network"; value: "EFX"} - ListElement { cryptoname: "Pikciochain"; value: "PKC"} - ListElement { cryptoname: "Handelion"; value: "HION"} - ListElement { cryptoname: "Darenta"; value: "PROD"} - ListElement { cryptoname: "Noxbox"; value: "NBX"} - ListElement { cryptoname: "CEEK Smart VR Token"; value: "CEEK"} - ListElement { cryptoname: "CEDEX Coin"; value: "CEDEX"} - ListElement { cryptoname: "DAOstack"; value: "GEN"} - ListElement { cryptoname: "Enkidu"; value: "ENK"} - ListElement { cryptoname: "Care Token"; value: "CARE*"} - ListElement { cryptoname: "Origami"; value: "ORI"} - ListElement { cryptoname: "Shping Coin"; value: "SHPING"} - ListElement { cryptoname: "Celsius Network"; value: "CEL"} - ListElement { cryptoname: "Educoin"; value: "EDU"} - ListElement { cryptoname: "Creditcoin"; value: "CRE*"} - ListElement { cryptoname: "Capdax"; value: "XCD*"} - ListElement { cryptoname: "Earth Token"; value: "EARTH"} - ListElement { cryptoname: "Ice Rock Mining"; value: "ROCK"} - ListElement { cryptoname: "Peculium"; value: "PCL"} - ListElement { cryptoname: "SyncFab"; value: "MFG"} - ListElement { cryptoname: "Gron Digital"; value: "GRO"} - ListElement { cryptoname: "Play 2 Live"; value: "LUC"} - ListElement { cryptoname: "Crafty"; value: "CFTY"} - ListElement { cryptoname: "Dether"; value: "DTH"} - ListElement { cryptoname: "CrowdCoinage"; value: "CCOS"} - ListElement { cryptoname: "AC3"; value: "AC3"} - ListElement { cryptoname: "Sp8de"; value: "SPX"} - ListElement { cryptoname: "Savedroid"; value: "SVD"} - ListElement { cryptoname: "Quantum1Net"; value: "Q1S"} - ListElement { cryptoname: "Serenity"; value: "SRNT"} - ListElement { cryptoname: "Budbo"; value: "BUBO"} - ListElement { cryptoname: "Odyssey"; value: "OCN"} - ListElement { cryptoname: "Paragon"; value: "PRG"} - ListElement { cryptoname: "HOLD"; value: "HOLD"} - ListElement { cryptoname: "True Flip Lottery"; value: "TFL"} - ListElement { cryptoname: "OrangeCoin"; value: "OC"} - ListElement { cryptoname: "Project Shivom"; value: "OMX"} - ListElement { cryptoname: "DigitalNote "; value: "XDN"} - ListElement { cryptoname: "Poa Network"; value: "POA"} - ListElement { cryptoname: "Bitcoin Diamond"; value: "BCD"} - ListElement { cryptoname: "Ellerium"; value: "ELP"} - ListElement { cryptoname: "BuzzCoin"; value: "BUZZ"} - ListElement { cryptoname: "Pushi"; value: "PUSHI"} - ListElement { cryptoname: "Truckcoin"; value: "TRCK"} - ListElement { cryptoname: "BitSoar Coin"; value: "BSR"} - ListElement { cryptoname: "IntenseCoin"; value: "ITNS"} - ListElement { cryptoname: "Semux"; value: "SEM"} - ListElement { cryptoname: "Adhive"; value: "ADH"} - ListElement { cryptoname: "ByteCoin"; value: "BCN"} - ListElement { cryptoname: "Bitcoin"; value: "BTC"} - ListElement { cryptoname: "Betrium Token"; value: "BTRM"} - ListElement { cryptoname: "Invacio"; value: "INV*"} - ListElement { cryptoname: "Miner One token"; value: "MIO"} - ListElement { cryptoname: "redBUX"; value: "redBUX"} - ListElement { cryptoname: "SPiCE Venture Capital "; value: "SPICE"} - ListElement { cryptoname: "e-Chat"; value: "ECHT"} - ListElement { cryptoname: "Saifu"; value: "SFU"} - ListElement { cryptoname: "Viberate"; value: "VIB"} - ListElement { cryptoname: "Rentberry"; value: "BERRY"} - ListElement { cryptoname: "Bankera"; value: "BNK"} - ListElement { cryptoname: "BlockLancer"; value: "LNC"} - ListElement { cryptoname: "BANCA"; value: "BANCA"} - ListElement { cryptoname: "Napoleon X"; value: "NPX"} - ListElement { cryptoname: "Nebula AI"; value: "NBAI"} - ListElement { cryptoname: "Lympo"; value: "LYM"} - ListElement { cryptoname: "Aphelion"; value: "APH"} - ListElement { cryptoname: "Morpheus Infrastructure Token"; value: "MITx"} - ListElement { cryptoname: "NOAHCOIN"; value: "NOAH"} - ListElement { cryptoname: "Robotina"; value: "ROX"} - ListElement { cryptoname: "PROUD Money"; value: "PROUD"} - ListElement { cryptoname: "Invox Finance"; value: "INVOX"} - ListElement { cryptoname: "Dorado"; value: "DOR"} - ListElement { cryptoname: "FintruX"; value: "FTX"} - ListElement { cryptoname: "PolicyPal Network"; value: "PAL"} - ListElement { cryptoname: "Enumivo"; value: "ENU"} - ListElement { cryptoname: "BlockMesh"; value: "BMH"} - ListElement { cryptoname: "FuturoCoin"; value: "FTO"} - ListElement { cryptoname: "The Abyss"; value: "ABYSS"} - ListElement { cryptoname: "WeToken"; value: "WT"} - ListElement { cryptoname: "Chimaera"; value: "CHI"} - ListElement { cryptoname: "DreamTeam Token"; value: "DTT"} - ListElement { cryptoname: "CoinPlace Token"; value: "CPL"} - ListElement { cryptoname: "XY Oracle"; value: "XYO"} - ListElement { cryptoname: "GoChain"; value: "GOC"} - ListElement { cryptoname: "Lendingblock"; value: "LND"} - ListElement { cryptoname: "Rubius"; value: "RUBY"} - ListElement { cryptoname: "INS Ecosystem"; value: "INS"} - ListElement { cryptoname: "QLC Chain"; value: "QLC"} - ListElement { cryptoname: "Manna"; value: "MANNA"} - ListElement { cryptoname: "MyBit"; value: "MYB"} - ListElement { cryptoname: "Curaizon"; value: "CTKN"} - ListElement { cryptoname: "Global Social Chain"; value: "GSC"} - ListElement { cryptoname: "FlipNpik"; value: "FNP"} - ListElement { cryptoname: "DOCADEMIC"; value: "MTC"} - ListElement { cryptoname: "Colu Local Network"; value: "CLN"} - ListElement { cryptoname: "MyToken"; value: "MT*"} - ListElement { cryptoname: "StreamSpace"; value: "SSH"} - ListElement { cryptoname: "Bitcoin Incognito"; value: "BTCI"} - ListElement { cryptoname: "RoboAdvisorCoin"; value: "RAC*"} - ListElement { cryptoname: "RoBET"; value: "RAC**"} - ListElement { cryptoname: "Hamster Marketplace Token"; value: "HMT"} - ListElement { cryptoname: "Callisto Network"; value: "CLO"} - ListElement { cryptoname: "Fitrova"; value: "FRV"} - ListElement { cryptoname: "Proxeus"; value: "XES"} - ListElement { cryptoname: "AB-CHAIN"; value: "RTB"} - ListElement { cryptoname: "FuzeX"; value: "FXT"} - ListElement { cryptoname: "RevolverCoin"; value: "XRE"} - ListElement { cryptoname: "ZCoin"; value: "XZC"} - ListElement { cryptoname: "Owlstand"; value: "OWD"} - ListElement { cryptoname: "Spindle"; value: "SPD*"} - ListElement { cryptoname: "Stipend"; value: "SPD"} - ListElement { cryptoname: "Decred"; value: "DCR"} - ListElement { cryptoname: "ElliotCoin"; value: "ELLI"} - ListElement { cryptoname: "AXS"; value: "AXS"} - ListElement { cryptoname: "Reden"; value: "REDN"} - ListElement { cryptoname: "GraphGrail AI"; value: "GAI"} - ListElement { cryptoname: "MobileBridge Momentum"; value: "CHF*"} - ListElement { cryptoname: "DataBroker DAO"; value: "DTX"} - ListElement { cryptoname: "ORS SA"; value: "ORS"} - ListElement { cryptoname: "RAcoin"; value: "RAC"} - ListElement { cryptoname: "Plutocoin"; value: "PTC**"} - ListElement { cryptoname: "Helbiz"; value: "HBZ"} - ListElement { cryptoname: "Befund"; value: "BFDT"} - ListElement { cryptoname: "Daneel"; value: "DAN"} - ListElement { cryptoname: "Essentia"; value: "ESS"} - ListElement { cryptoname: "AIChain Token"; value: "AIT"} - ListElement { cryptoname: "UnitedBitcoin"; value: "UBTC"} - ListElement { cryptoname: "Live Stars"; value: "LIVE"} - ListElement { cryptoname: "Nafen"; value: "NFN"} - ListElement { cryptoname: "Content Neutrality Network"; value: "CNN"} - ListElement { cryptoname: "KEYCO"; value: "KEC"} - ListElement { cryptoname: "Hydro Protocol"; value: "HOT*"} - ListElement { cryptoname: "BLOCKv"; value: "VEE"} - ListElement { cryptoname: "DixiCoin"; value: "DXC"} - ListElement { cryptoname: "Hydrogen"; value: "HYDRO"} - ListElement { cryptoname: "UniBright"; value: "UBT"} - ListElement { cryptoname: "Libra Credit"; value: "LBA"} - ListElement { cryptoname: "Ligercoin"; value: "LIGER"} - ListElement { cryptoname: "Oyster Shell"; value: "SHL"} - ListElement { cryptoname: "PATRON"; value: "PAT"} - ListElement { cryptoname: "IvyKoin"; value: "IVY"} - ListElement { cryptoname: "ODEM "; value: "ODE"} - ListElement { cryptoname: "Amon"; value: "AMN"} - ListElement { cryptoname: "SABR Coin"; value: "SABR"} - ListElement { cryptoname: "Switcheo"; value: "SWTH"} - ListElement { cryptoname: "GINcoin"; value: "GIN"} - ListElement { cryptoname: "HollyWoodCoin"; value: "HWC"} - ListElement { cryptoname: "Nullex"; value: "NLX"} - ListElement { cryptoname: "Intelligent Trading"; value: "ITT"} - ListElement { cryptoname: "Tutellus"; value: "TUT"} - ListElement { cryptoname: "Fillit"; value: "FILL"} - ListElement { cryptoname: "Cool Cousin"; value: "CUZ"} - ListElement { cryptoname: "Clinicoin"; value: "CLIN"} - ListElement { cryptoname: "bitSilver"; value: "BITSILVER"} - ListElement { cryptoname: "bitGold"; value: "BITGOLD"} - ListElement { cryptoname: "bitUSD"; value: "BITUSD"} - ListElement { cryptoname: "Faceter "; value: "FACE"} - ListElement { cryptoname: "Linker Coin"; value: "LNC*"} - ListElement { cryptoname: "Carboncoin"; value: "CARBON"} - ListElement { cryptoname: "IoTeX Network"; value: "IOTX"} - ListElement { cryptoname: "Open Platform"; value: "OPEN"} - ListElement { cryptoname: "Bettium"; value: "BETT"} - ListElement { cryptoname: "Morpheus Network"; value: "MORPH"} - ListElement { cryptoname: "Golos Gold"; value: "GBG"} - ListElement { cryptoname: "Straks"; value: "STAK"} - ListElement { cryptoname: "VLUX"; value: "VLUX"} - ListElement { cryptoname: "Bidipass"; value: "BDP"} - ListElement { cryptoname: "Crave-NG"; value: "CRAVE*"} - ListElement { cryptoname: "AITrading"; value: "AITT"} - ListElement { cryptoname: "BitcoinZ"; value: "BTCZ"} - ListElement { cryptoname: "Nano"; value: "NANO"} - ListElement { cryptoname: "UCOT"; value: "UCT"} - ListElement { cryptoname: "DNN Token"; value: "DNN"} - ListElement { cryptoname: "EOS"; value: "EOS"} - ListElement { cryptoname: "ShareRing"; value: "SHR"} - ListElement { cryptoname: "DESI"; value: "DESI"} - ListElement { cryptoname: "AEON"; value: "AEON"} - ListElement { cryptoname: "Amo Coin"; value: "AMO"} - ListElement { cryptoname: "WinStars"; value: "WINS"} - ListElement { cryptoname: "Elysian"; value: "ELY"} - ListElement { cryptoname: "Verasity"; value: "VRA"} - ListElement { cryptoname: "MOS Coin"; value: "MOS"} - ListElement { cryptoname: "Pavocoin"; value: "PAVO"} - ListElement { cryptoname: "Kepler"; value: "KEP"} - ListElement { cryptoname: "Yumerium"; value: "YUM"} - ListElement { cryptoname: "Darico"; value: "DEC"} - ListElement { cryptoname: "GreenX"; value: "GEX"} - ListElement { cryptoname: "AI Crypto"; value: "AIC"} - ListElement { cryptoname: "BEX token"; value: "BEX"} - ListElement { cryptoname: "Ubex"; value: "UBEX"} - ListElement { cryptoname: "Mint"; value: "MNTS"} - ListElement { cryptoname: "Crowd Machine"; value: "CMCT"} - ListElement { cryptoname: "BitRewards"; value: "BIT"} - ListElement { cryptoname: "Ubcoin"; value: "UBC"} - ListElement { cryptoname: "intimate.io"; value: "ITM"} - ListElement { cryptoname: "Trippki"; value: "TRIP"} - ListElement { cryptoname: "Scanetchain Token"; value: "SWC"} - ListElement { cryptoname: "MoneyRebel"; value: "MRP*"} - ListElement { cryptoname: "Gimmer"; value: "GMR"} - ListElement { cryptoname: "Taklimakan"; value: "TKLN"} - ListElement { cryptoname: "Countinghouse Fund"; value: "CHT"} - ListElement { cryptoname: "LocalCoinSwap"; value: "LCS"} - ListElement { cryptoname: "LevelNet Token"; value: "LVL*"} - ListElement { cryptoname: "Satisfaction Token"; value: "SAT"} - ListElement { cryptoname: "CryptoHub"; value: "CHBR"} - ListElement { cryptoname: "Mother Of All Tokens"; value: "MOAT"} - ListElement { cryptoname: "Acorn Collective"; value: "OAK"} - ListElement { cryptoname: "BotChain"; value: "BOTC"} - ListElement { cryptoname: "Valorem"; value: "VLR"} - ListElement { cryptoname: "Well"; value: "WELL"} - ListElement { cryptoname: "Tradelize"; value: "TDZ"} - ListElement { cryptoname: "EQUI Token"; value: "EQUI"} - ListElement { cryptoname: "SwissRealCoin"; value: "SRC**"} - ListElement { cryptoname: "Adamant"; value: "ADM"} - ListElement { cryptoname: "Market.space"; value: "MASP"} - ListElement { cryptoname: "Globex SCI"; value: "GSI"} - ListElement { cryptoname: "Litecoin Cash"; value: "LTCH"} - ListElement { cryptoname: "Parlay"; value: "PAR"} -} diff --git a/plasmoid/contents/ui/CurModel.qml b/plasmoid/contents/ui/CurModel.qml deleted file mode 100644 index 0271fac..0000000 --- a/plasmoid/contents/ui/CurModel.qml +++ /dev/null @@ -1,186 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License or (at your option) version 3 or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.) which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not see . -*/ - -import QtQuick 2.9 - -ListModel { -id: curModel - ListElement { currencyname: "AED"; value: "AED"} - ListElement { currencyname: "AFN"; value: "AFN"} - ListElement { currencyname: "ALL"; value: "ALL"} - ListElement { currencyname: "AMD"; value: "AMD"} - ListElement { currencyname: "ANG"; value: "ANG"} - ListElement { currencyname: "AOA"; value: "AOA"} - ListElement { currencyname: "ARS"; value: "ARS"} - ListElement { currencyname: "AUD"; value: "AUD"} - ListElement { currencyname: "AWG"; value: "AWG"} - ListElement { currencyname: "AZN"; value: "AZN"} - ListElement { currencyname: "BAM"; value: "BAM"} - ListElement { currencyname: "BBD"; value: "BBD"} - ListElement { currencyname: "BDT"; value: "BDT"} - ListElement { currencyname: "BGN"; value: "BGN"} - ListElement { currencyname: "BHD"; value: "BHD"} - ListElement { currencyname: "BIF"; value: "BIF"} - ListElement { currencyname: "BMD"; value: "BMD"} - ListElement { currencyname: "BND"; value: "BND"} - ListElement { currencyname: "BOB"; value: "BOB"} - ListElement { currencyname: "BRL"; value: "BRL"} - ListElement { currencyname: "BSD"; value: "BSD"} - ListElement { currencyname: "BTN"; value: "BTN"} - ListElement { currencyname: "BWP"; value: "BWP"} - ListElement { currencyname: "BYN"; value: "BYN"} - ListElement { currencyname: "BZD"; value: "BZD"} - ListElement { currencyname: "CAD"; value: "CAD"} - ListElement { currencyname: "CDF"; value: "CDF"} - ListElement { currencyname: "CHF"; value: "CHF"} - ListElement { currencyname: "CLP"; value: "CLP"} - ListElement { currencyname: "CNY"; value: "CNY"} - ListElement { currencyname: "COP"; value: "COP"} - ListElement { currencyname: "CRC"; value: "CRC"} - ListElement { currencyname: "CUC"; value: "CUC"} - ListElement { currencyname: "CUP"; value: "CUP"} - ListElement { currencyname: "CVE"; value: "CVE"} - ListElement { currencyname: "CZK"; value: "CZK"} - ListElement { currencyname: "DJF"; value: "DJF"} - ListElement { currencyname: "DKK"; value: "DKK"} - ListElement { currencyname: "DOP"; value: "DOP"} - ListElement { currencyname: "DZD"; value: "DZD"} - ListElement { currencyname: "EGP"; value: "EGP"} - ListElement { currencyname: "ERN"; value: "ERN"} - ListElement { currencyname: "ETB"; value: "ETB"} - ListElement { currencyname: "EUR"; value: "EUR"} - ListElement { currencyname: "FJD"; value: "FJD"} - ListElement { currencyname: "FKP"; value: "FKP"} - ListElement { currencyname: "GBP"; value: "GBP"} - ListElement { currencyname: "GEL"; value: "GEL"} - ListElement { currencyname: "GGP"; value: "GGP"} - ListElement { currencyname: "GHS"; value: "GHS"} - ListElement { currencyname: "GIP"; value: "GIP"} - ListElement { currencyname: "GMD"; value: "GMD"} - ListElement { currencyname: "GNF"; value: "GNF"} - ListElement { currencyname: "GTQ"; value: "GTQ"} - ListElement { currencyname: "GYD"; value: "GYD"} - ListElement { currencyname: "HKD"; value: "HKD"} - ListElement { currencyname: "HNL"; value: "HNL"} - ListElement { currencyname: "HRK"; value: "HRK"} - ListElement { currencyname: "HTG"; value: "HTG"} - ListElement { currencyname: "HUF"; value: "HUF"} - ListElement { currencyname: "IDR"; value: "IDR"} - ListElement { currencyname: "ILS"; value: "ILS"} - ListElement { currencyname: "IMP"; value: "IMP"} - ListElement { currencyname: "INR"; value: "INR"} - ListElement { currencyname: "IQD"; value: "IQD"} - ListElement { currencyname: "IRR"; value: "IRR"} - ListElement { currencyname: "ISK"; value: "ISK"} - ListElement { currencyname: "JEP"; value: "JEP"} - ListElement { currencyname: "JMD"; value: "JMD"} - ListElement { currencyname: "JOD"; value: "JOD"} - ListElement { currencyname: "JPY"; value: "JPY"} - ListElement { currencyname: "KES"; value: "KES"} - ListElement { currencyname: "KGS"; value: "KGS"} - ListElement { currencyname: "KHR"; value: "KHR"} - ListElement { currencyname: "KMF"; value: "KMF"} - ListElement { currencyname: "KPW"; value: "KPW"} - ListElement { currencyname: "KRW"; value: "KRW"} - ListElement { currencyname: "KWD"; value: "KWD"} - ListElement { currencyname: "KYD"; value: "KYD"} - ListElement { currencyname: "KZT"; value: "KZT"} - ListElement { currencyname: "LAK"; value: "LAK"} - ListElement { currencyname: "LBP"; value: "LBP"} - ListElement { currencyname: "LKR"; value: "LKR"} - ListElement { currencyname: "LRD"; value: "LRD"} - ListElement { currencyname: "LSL"; value: "LSL"} - ListElement { currencyname: "LYD"; value: "LYD"} - ListElement { currencyname: "MAD"; value: "MAD"} - ListElement { currencyname: "MDL"; value: "MDL"} - ListElement { currencyname: "MGA"; value: "MGA"} - ListElement { currencyname: "MKD"; value: "MKD"} - ListElement { currencyname: "MMK"; value: "MMK"} - ListElement { currencyname: "MNT"; value: "MNT"} - ListElement { currencyname: "MOP"; value: "MOP"} - ListElement { currencyname: "MRU"; value: "MRU"} - ListElement { currencyname: "MUR"; value: "MUR"} - ListElement { currencyname: "MVR"; value: "MVR"} - ListElement { currencyname: "MWK"; value: "MWK"} - ListElement { currencyname: "MXN"; value: "MXN"} - ListElement { currencyname: "MYR"; value: "MYR"} - ListElement { currencyname: "MZN"; value: "MZN"} - ListElement { currencyname: "NAD"; value: "NAD"} - ListElement { currencyname: "NGN"; value: "NGN"} - ListElement { currencyname: "NIO"; value: "NIO"} - ListElement { currencyname: "NOK"; value: "NOK"} - ListElement { currencyname: "NPR"; value: "NPR"} - ListElement { currencyname: "NZD"; value: "NZD"} - ListElement { currencyname: "OMR"; value: "OMR"} - ListElement { currencyname: "PAB"; value: "PAB"} - ListElement { currencyname: "PEN"; value: "PEN"} - ListElement { currencyname: "PGK"; value: "PGK"} - ListElement { currencyname: "PHP"; value: "PHP"} - ListElement { currencyname: "PKR"; value: "PKR"} - ListElement { currencyname: "PLN"; value: "PLN"} - ListElement { currencyname: "PYG"; value: "PYG"} - ListElement { currencyname: "QAR"; value: "QAR"} - ListElement { currencyname: "RON"; value: "RON"} - ListElement { currencyname: "RSD"; value: "RSD"} - ListElement { currencyname: "RUB"; value: "RUB"} - ListElement { currencyname: "RWF"; value: "RWF"} - ListElement { currencyname: "SAR"; value: "SAR"} - ListElement { currencyname: "SBD"; value: "SBD"} - ListElement { currencyname: "SCR"; value: "SCR"} - ListElement { currencyname: "SDG"; value: "SDG"} - ListElement { currencyname: "SEK"; value: "SEK"} - ListElement { currencyname: "SGD"; value: "SGD"} - ListElement { currencyname: "SHP"; value: "SHP"} - ListElement { currencyname: "SLL"; value: "SLL"} - ListElement { currencyname: "SOS"; value: "SOS"} - ListElement { currencyname: "SPL"; value: "SPL"} - ListElement { currencyname: "SRD"; value: "SRD"} - ListElement { currencyname: "STN"; value: "STN"} - ListElement { currencyname: "SVC"; value: "SVC"} - ListElement { currencyname: "SYP"; value: "SYP"} - ListElement { currencyname: "SZL"; value: "SZL"} - ListElement { currencyname: "THB"; value: "THB"} - ListElement { currencyname: "TJS"; value: "TJS"} - ListElement { currencyname: "TMT"; value: "TMT"} - ListElement { currencyname: "TND"; value: "TND"} - ListElement { currencyname: "TOP"; value: "TOP"} - ListElement { currencyname: "TRY"; value: "TRY"} - ListElement { currencyname: "TTD"; value: "TTD"} - ListElement { currencyname: "TVD"; value: "TVD"} - ListElement { currencyname: "TWD"; value: "TWD"} - ListElement { currencyname: "TZS"; value: "TZS"} - ListElement { currencyname: "UAH"; value: "UAH"} - ListElement { currencyname: "UGX"; value: "UGX"} - ListElement { currencyname: "USD"; value: "USD"} - ListElement { currencyname: "UYU"; value: "UYU"} - ListElement { currencyname: "UZS"; value: "UZS"} - ListElement { currencyname: "VEF"; value: "VEF"} - ListElement { currencyname: "VND"; value: "VND"} - ListElement { currencyname: "VUV"; value: "VUV"} - ListElement { currencyname: "WST"; value: "WST"} - ListElement { currencyname: "XAF"; value: "XAF"} - ListElement { currencyname: "XCD"; value: "XCD"} - ListElement { currencyname: "XDR"; value: "XDR"} - ListElement { currencyname: "XOF"; value: "XOF"} - ListElement { currencyname: "XPF"; value: "XPF"} - ListElement { currencyname: "YER"; value: "YER"} - ListElement { currencyname: "ZAR"; value: "ZAR"} - ListElement { currencyname: "ZMW"; value: "ZMW"} - ListElement { currencyname: "ZWD"; value: "ZWD"} -} diff --git a/plasmoid/contents/ui/CurrentWeatherType.qml b/plasmoid/contents/ui/CurrentWeatherType.qml deleted file mode 100644 index 97ce8d7..0000000 --- a/plasmoid/contents/ui/CurrentWeatherType.qml +++ /dev/null @@ -1,255 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Window 2.2 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.2 -import QtQml.Models 2.2 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras - -Column { - spacing: 6 - - property var scttemp: metacontent.currentIntent.currenttemp - property var slttemp: metacontent.currentIntent.mintemp - property var shttemp: metacontent.currentIntent.maxtemp - property var ssum: metacontent.currentIntent.sum - property var sloc: metacontent.currentIntent.loc - property var sicon: metacontent.currentIntent.icon - - Row { - id: messageRow - spacing: 6 - - Rectangle{ - id: messageWrapper - width: cbwidth - height: weathbgImg.height - color: theme.backgroundColor - - Image{ - id: weathbgImg - width: cbwidth - height: messageRect.height - - Component.onCompleted: { - if(metacontent.currentIntent.sum.indexOf("scattered") !== -1 && metacontent.currentIntent.sum.indexOf("clouds") !== -1 || metacontent.currentIntent.sum.indexOf("clear") !== -1 || metacontent.currentIntent.sum.indexOf("clouds") !== -1 ){ - weathbgImg.source = "../images/climatesc.jpg" - } - else if(metacontent.currentIntent.sum.indexOf("rain") !== -1){ - weathbgImg.source = "../images/rain.gif" - } - else if(metacontent.currentIntent.sum.indexOf("snow") !== -1){ - weathbgImg.source = "../images/snow.gif" - } - else if(metacontent.currentIntent.sum.indexOf("snow") !== -1){ - weathbgImg.source = "../images/snow.gif" - } - else if(metacontent.currentIntent.sum.indexOf("haze") !== -1){ - weathbgImg.source = "../images/haze.gif" - } - else { - weathbgImg.source = "" - } - } - - Item { - id: messageRect - width: cbwidth - height: weatherinfoBar.height + rectanglectt.height + units.gridUnit * 1 - - Rectangle { - id: weatherinfoBar - width: messageRect - color: theme.backgroundColor - height: units.gridUnit * 2 - anchors.top: parent.top - anchors.topMargin: units.gridUnit * 0.5 - anchors.left: parent.left - anchors.right: parent.right - - PlasmaComponents.Label { - id: weatherLocation - anchors.left: parent.left - anchors.leftMargin: 8 - font.capitalization: Font.SmallCaps - font.italic: false - font.bold: true - font.pixelSize: 15 - - Component.onCompleted: { - weatherLocation.text = sloc - } - } - - Row { - id: sumRow - anchors.right: parent.right - anchors.rightMargin: 12 - height: parent.height - spacing: 2 - - Image { - id: weatherIcon - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - anchors.verticalCenter: parent.verticalCenter - Component.onCompleted: { - weatherIcon.source = "http://openweathermap.org/img/w/" + sicon + ".png" - } - } - - PlasmaCore.SvgItem { - id: weatherheaderSeprtr - anchors.verticalCenter: parent.verticalCenter - height: units.gridUnit * 1 - width: whvertseptSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: whvertseptSvg; - imagePath: "widgets/line" - } - } - - PlasmaComponents.Label { - id: weatherSummary - font.italic: true - font.bold: true - font.capitalization: Font.SmallCaps - font.pixelSize: 15 - - Component.onCompleted: { - weatherSummary.text = ssum - } - } - } - } - - PlasmaCore.SvgItem { - anchors { - left: messageRect.left - right: messageRect.right - top: rectanglectt.top - } - width: 1 - height: horlinewthrtopSvg.elementSize("horizontal-line").height - - elementId: "horizontal-line" - z: 110 - svg: PlasmaCore.Svg { - id: horlinewthrtopSvg; - imagePath: "widgets/line" - } - } - - Rectangle { - id: rectanglectt - anchors.left: parent.left - anchors.right: parent.right - height: weatherMinLabel.height + nwsseprator2.height + weatherCurrentLabel.height + nwsseprator3.height + weatherMaxLabel.height + units.gridUnit * 0.50 - color: theme.backgroundColor - anchors.top: weatherinfoBar.bottom - anchors.topMargin: 5 - - Text { - id: weatherMinLabel - anchors.top: parent.top - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - - Component.onCompleted: { - weatherMinLabel.text = i18n("Minimum Temperature: %1", slttemp) - } - } - - Rectangle { - id: nwsseprator2 - width: parent.width - anchors.top: weatherMinLabel.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Text { - id: weatherCurrentLabel - anchors.top: nwsseprator2.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - - Component.onCompleted: { - weatherCurrentLabel.text = i18n("Current Temperature: %1", scttemp) - } - } - - Rectangle { - id: nwsseprator3 - width: parent.width - anchors.top: weatherCurrentLabel.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Text { - id: weatherMaxLabel - anchors.top: nwsseprator3.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - - Component.onCompleted: { - weatherMaxLabel.text = i18n("Maximum Temperature: %1", shttemp) - } - } - } - } - } - } - } -} diff --git a/plasmoid/contents/ui/CustomIndicator.qml b/plasmoid/contents/ui/CustomIndicator.qml deleted file mode 100644 index 8a4cd98..0000000 --- a/plasmoid/contents/ui/CustomIndicator.qml +++ /dev/null @@ -1,305 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import QtGraphicalEffects 1.0 - -Rectangle { - id: bgrectA - anchors.fill: parent - color: theme.linkColor - - function aniRunWorking(){ - animtimer.start() - topCircle.inneranimtopworking.start() - maskItem.inneranimworking.start() - } - - function aniRunTransition(){ - animtimer.start() - topCircle.inneranimtoptransition.start() - maskItem.inneranimtransition.start() - } - - - function aniRunHappy (){ - animtimer.start() - topCircle.inneranimtophappy.start() - maskItem.inneranimhappy.start() - } - - function aniRunError(){ - animtimer.start() - topCircle.inneranimtopsad.start() - maskItem.inneranimsad.start() - } - -Item{ - id: customIndicatorBusy - anchors.fill: parent - visible: true - - RotationAnimator { - target:topCircle - id: antoWorking - from: 0; - to: 360; - duration: 500 - running: false - alwaysRunToEnd: true - } - - RotationAnimator { - target:topCircle - id: antoTransition - from: 0; - to: 0; - duration: 500 - running: false - alwaysRunToEnd: true - } - - RotationAnimator { - target:topCircle - id: antoSad - from: 0; - to: 180; - duration: 500 - direction: RotationAnimator.Counterclockwise - running: false - alwaysRunToEnd: true; - - } - - RotationAnimator { - target:topCircle - id: antoHappy - from: 0; - to: 360; - duration: 500 - running: false - alwaysRunToEnd: true; - } - - SequentialAnimation { - id: seqmaskanimworking - running: false - loops: Animation.Infinite - PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 1.185 } - NumberAnimation { target: myRot; property: "angle"; from:0; to: -360; duration: 500} - - onStopped: { - myRot.angle = 0 - } - } - - SequentialAnimation { - id: seqmaskanimtransition - running: false - loops: Animation.Infinite - PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 1.185 } - NumberAnimation { target: myRot; property: "angle"; from: 0; to: 0; duration: 500} - } - - SequentialAnimation { - id: colrmeonAnsHappy - ParallelAnimation { - PropertyAnimation { target: innerCircleSurround; property: "color"; from: "#ffffff"; to: "lightgreen"; duration: 500; } - PropertyAnimation { target: circ; property: "color"; from: "#ffffff"; to: "lightgreen"; duration: 500; } - PropertyAnimation { target: topCircle.circle; property: "color"; from: "#ffffff"; to: "lightgreen"; duration: 500; } - } - ParallelAnimation { - PropertyAnimation { target: innerCircleSurround; property: "color"; from: "lightgreen"; to: "#fff"; duration: 500; } - PropertyAnimation { target: circ; property: "color"; from: "lightgreen"; to: "#fff"; duration: 500; } - PropertyAnimation { target: topCircle.circle; property: "color"; from: "lightgreen"; to: "#fff"; duration: 500; } - } - } - - SequentialAnimation { - id: colrmeonAnsSad - ParallelAnimation { - PropertyAnimation { target: innerCircleSurround; property: "color"; from: "#ffffff"; to: "red"; duration: 500; } - PropertyAnimation { target: circ; property: "color"; from: "#ffffff"; to: "red"; duration: 1000; } - PropertyAnimation { target: topCircle.circle; property: "color"; from: "#ffffff"; to: "red"; duration: 500; } - } - ParallelAnimation { - PropertyAnimation { target: innerCircleSurround; property: "color"; from: "red"; to: "#fff"; duration: 500; } - PropertyAnimation { target: circ; property: "color"; from: "red"; to: "#fff"; duration: 1000; } - PropertyAnimation { target: topCircle.circle; property: "color"; from: "red"; to: "#fff"; duration: 500; } - } - } - - SequentialAnimation { - id: seqmaskanimhappy - running: false - loops: Animation.Infinite - PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 1.185 } - NumberAnimation { target: myRot; property: "angle"; from:0; to: -360; duration: 500} - - onStopped: { - myRot.angle = -90 - transtimer.start() - } - - onStarted: { - colrmeonAnsHappy.running = true - } - } - - SequentialAnimation { - id: seqmaskanimsad - running: false - loops: Animation.Infinite - PropertyAction { target: myRot; property: "origin.x"; value: units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: units.gridUnit * 1.185 } - NumberAnimation { target: myRot; property: "angle"; from:0; to: 360; duration: 500} - - onStopped: { - myRot.angle = 90 - transtimer.start() - } - - onStarted: { - colrmeonAnsSad.running = true - } - } - - Rectangle{ - anchors.fill: parent - color: theme.linkColor - - Rectangle { - id: topCircle - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - color: "#00000000" - radius: 1 - opacity: 1 - implicitWidth: units.gridUnit * 4.5 - implicitHeight: units.gridUnit * 4.5 - property alias inneranimtopworking: antoWorking - property alias inneranimtophappy: antoHappy - property alias inneranimtopsad: antoSad - property alias inneranimtoptransition: antoTransition - property alias circle: innerSqr - - Rectangle{ - id: innerSqr - anchors.top: parent.top - anchors.horizontalCenter: parent.horizontalCenter - color: "#fff" - radius: 100 - width: units.gridUnit * 0.45 - height: units.gridUnit * 0.45 - } - } - - Rectangle { - id: innerCircleSurround - anchors.centerIn: parent - color: "#ffffff" - radius: 100 - implicitWidth: units.gridUnit * 3 - implicitHeight: units.gridUnit * 3 - opacity: 1 - } - - Rectangle { - id: innerCircleSurroundOutterRing - anchors.centerIn: parent - color: theme.linkColor - radius: 100 - implicitWidth: units.gridUnit * 2.75 - implicitHeight: units.gridUnit * 2.75 - opacity: 1 - } - - Rectangle { - id: maskItem - anchors.verticalCenter: parent.verticalCenter - anchors.left: innerCircleSurroundOutterRing.left - anchors.leftMargin: units.gridUnit * 0.2 - color: "#00000000" - radius: 1000 - implicitWidth: units.gridUnit * 1.25 - implicitHeight: units.gridUnit * 2.4 - clip: true - property alias cc: semicirc - property alias inneranimworking: seqmaskanimworking - property alias inneranimtransition: seqmaskanimtransition - property alias inneranimhappy: seqmaskanimhappy - property alias inneranimsad: seqmaskanimsad - opacity: 1 - - transform: Rotation { - id: myRot - } - - Item { - id: semicirc - anchors.left: parent.left - anchors.top: parent.top - anchors.bottom: parent.bottom - width: units.gridUnit * 4.7 - clip:true - opacity: 1 - - Rectangle{ - id: circ - width: parent.width - height: parent.height - radius:100 - color: "white" - } - } - } - - Timer { - id: animtimer - interval: 500; - repeat: false - onTriggered: { - maskItem.inneranimworking.stop() - maskItem.inneranimtransition.stop() - maskItem.inneranimhappy.stop() - maskItem.inneranimsad.stop() - topCircle.inneranimtopworking.stop() - topCircle.inneranimtoptransition.stop() - topCircle.inneranimtophappy.stop() - topCircle.inneranimtopsad.stop() - } - } - - Timer { - id: transtimer - interval: 500; - repeat: false - onTriggered: { - myRot.angle = 0 - antoTransition.running = true - } - } - } - } - } diff --git a/plasmoid/contents/ui/CustomMicIndicator.qml b/plasmoid/contents/ui/CustomMicIndicator.qml deleted file mode 100644 index d40ed50..0000000 --- a/plasmoid/contents/ui/CustomMicIndicator.qml +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Item { - anchors.fill: parent - anchors.topMargin: units.gridUnit * 0.25 - - SequentialAnimation { - id: cstMicSeq - running: false - loops: Animation.Infinite - - ParallelAnimation{ - PropertyAnimation { - target: cstMicIconLeftHandle - property: "opacity"; - from: 1 - to: 0 - duration: 1000 - } - PropertyAnimation { - target: cstMicIconRightHandle - property: "opacity"; - from: 1 - to: 0 - duration: 1000 - } - } - } - - Image { - id: cstMicIconLeftHandle - width: units.gridUnit * 1.5 - height: units.gridUnit * 3 - opacity: 0.50 - anchors.verticalCenter: parent.verticalCenter - anchors.right: cstMicIcon.left - anchors.rightMargin: -units.gridUnit * 1 - smooth: true - mipmap: true - source: "../images/mleftsmallanim.png" - } - - ColorOverlay { - anchors.fill: cstMicIconLeftHandle - source: cstMicIconLeftHandle - color: theme.linkColor - } - - Image { - id: cstMicIconRightHandle - width: units.gridUnit * 1.5 - height: units.gridUnit * 3 - opacity: 0.50 - anchors.verticalCenter: parent.verticalCenter - anchors.left: cstMicIcon.right - anchors.leftMargin: -units.gridUnit * 1 - smooth: true - mipmap: true - source: "../images/mrightsmallanim.png" - } - - ColorOverlay { - anchors.fill: cstMicIconRightHandle - source: cstMicIconRightHandle - color: theme.linkColor - } - - Image { - id: cstMicIcon - anchors.centerIn: parent - width: units.gridUnit * 3.5 - height: units.gridUnit * 3.5 - smooth: true - mipmap: true - source: "../images/mycroftmic.png" - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onEntered: { - clovrLyCSTmic.color = theme.textColor - cstMicSeq.running = true - } - - onExited: { - clovrLyCSTmic.color = theme.linkColor - cstMicSeq.running = false - } - - onClicked: { - var socketmessage = {}; - socketmessage.type = "mycroft.mic.listen"; - socketmessage.data = {}; - socketmessage.data.utterances = []; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - } - - ColorOverlay { - id: clovrLyCSTmic - anchors.fill: cstMicIcon - source: cstMicIcon - color: theme.linkColor - } - -} diff --git a/plasmoid/contents/ui/DashCryptoDelegate.qml b/plasmoid/contents/ui/DashCryptoDelegate.qml deleted file mode 100644 index 36b7698..0000000 --- a/plasmoid/contents/ui/DashCryptoDelegate.qml +++ /dev/null @@ -1,307 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Rectangle { - id: dashDelegateItm - height: units.gridUnit * 2.5 - width: cbwidth - units.gridUnit * 0.50 - border.width: 1 - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - Item { - id: contentdlgtitem - width: parent.width - height: parent.height - - Item { - id: skillTopRowLayout - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: dashHeader.height - - Text { - id: dashHeader - anchors.left: dashHeaderSeprtr.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - wrapMode: Text.Wrap - font.bold: true - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18n("Currency: %1", model.contents.cryptoType) - } - - PlasmaCore.SvgItem { - id: dashHeaderSeprtr - anchors { - left: contxtnewsitemmenu.right - leftMargin: units.gridUnit * 0.25 - verticalCenter: parent.verticalCenter - } - height: units.gridUnit * 1 - width: linetopleftvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: dashhdrvertSvg; - imagePath: "widgets/line" - } - } - - ToolButton { - id: contxtnewsitemmenu - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - Image { - id: innrnewitemcontxmenuimage - source: "../images/ctxmenu.png" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: units.gridUnit * 0.60 - height: units.gridUnit * 0.50 - } - ColorOverlay { - anchors.fill: innrnewitemcontxmenuimage - source: innrnewitemcontxmenuimage - color: theme.textColor - } - onClicked: { - mcmenuItem.open() - } - } - } - - Rectangle { - id: nwsseprator - width: parent.width - anchors.top: skillTopRowLayout.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Item { - id: dashinner - width: parent.width - implicitHeight: nwsdesc.height - Layout.minimumHeight: units.gridUnit * 2 - anchors.top: nwsseprator.bottom - anchors.topMargin: 1 - - Text { - id: nwsdesc - wrapMode: Text.Wrap; - anchors.left: parent.left - width: parent.width / 3 - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18nc("%1 is the currency symbol, %2 is the current rate", "%1: %2", model.contents.cryptoSymbol1, model.contents.cryptoCurRate1) - } - - Text { - id: nwsdesc2 - wrapMode: Text.Wrap; - anchors.left: nwsdesc.right - width: parent.width / 3 - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18nc("%1 is the currency symbol, %2 is the current rate", "%1: %2", model.contents.cryptoSymbol2, model.contents.cryptoCurRate2) - } - - Text { - id: nwsdesc3 - wrapMode: Text.Wrap; - anchors.left: nwsdesc2.right - width: parent.width / 3 - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18nc("%1 is the currency symbol, %2 is the current rate", "%1: %2", model.contents.cryptoSymbol3, model.contents.cryptoCurRate3) - } - - - } - } - - Drawer { - id: mcmenuItem - width: dwrpaddedwidth - height: removeCardRectbtn.height + disableCardRectbtn.height - edge: Qt.TopEdge - dragMargin: 0 - - Rectangle { - id: menuRectItem - anchors.fill: parent - color: theme.backgroundColor - - Column { - id: menuRectColumn - anchors.fill: parent - - Rectangle { - id: removeCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: removeCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "archive-remove" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: removeCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: removeCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Remove Card") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - removeCardLabel.color = theme.linkColor - } - onExited:{ - removeCardLabel.color = theme.textColor - } - onClicked:{ - dashCardCollectionModel.remove(index) - removeChildCard() - } - } - } - - Rectangle { - id: btnshorzSepr - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: disableCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: disableCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "document-close" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: disableCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: disableCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Disable Cryptocurrency Card") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - disableCardLabel.color = theme.linkColor - } - onExited:{ - disableCardLabel.color = theme.textColor - } - onClicked:{ - cryptocardswitch.checked = false - dashCardCollectionModel.remove(index) - removeChildCard() - } - } - } - - Rectangle { - id: btnshorzSeprEnd - width: parent.width - height: units.gridUnit * 0.75 - color: theme.linkColor - - PlasmaCore.IconItem { - id: closemenuDrawer - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - } - } - } - } - } diff --git a/plasmoid/contents/ui/DashNewsDelegate.qml b/plasmoid/contents/ui/DashNewsDelegate.qml deleted file mode 100644 index c43066d..0000000 --- a/plasmoid/contents/ui/DashNewsDelegate.qml +++ /dev/null @@ -1,487 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Rectangle { - id: dashDelegateItm - height: skillTopRowLayout.height + dashinner.height + dashItemSrcMeta.height + units.gridUnit * 0.5 - width: cbwidth - units.gridUnit * 0.50 - border.width: 1 - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - Item { - id: contentdlgtitem - width: parent.width - units.gridUnit * 0.05 - height: parent.height - - Item { - id: skillTopRowLayout - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: dashHeader.implicitHeight + units.gridUnit * 0.5 - - Text { - id: dashHeader - anchors.left: dashHeaderSeprtr.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - width: parent.width - Math.round(contxtnewsitemmenu.width + units.gridUnit * 1.25) - wrapMode: Text.Wrap; - font.bold: true; - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: model.contents.newsTitle - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onEntered: { - dashHeader.color = theme.linkColor - dashHeader.font.underline = true - } - onExited: { - dashHeader.color = PlasmaCore.ColorScope.textColor - dashHeader.font.underline = false - } - onClicked: { - Qt.openUrlExternally(model.contents.newsURL) - } - } - } - - PlasmaCore.SvgItem { - id: dashHeaderSeprtr - anchors { - left: contxtnewsitemmenu.right - leftMargin: units.gridUnit * 0.25 - verticalCenter: parent.verticalCenter - } - height: units.gridUnit * 1 - width: linetopleftvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: dashhdrvertSvg; - imagePath: "widgets/line" - } - } - - ToolButton { - id: contxtnewsitemmenu - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - Image { - id: innrnewitemcontxmenuimage - source: "../images/ctxmenu.png" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: units.gridUnit * 0.60 - height: units.gridUnit * 0.50 - } - ColorOverlay { - anchors.fill: innrnewitemcontxmenuimage - source: innrnewitemcontxmenuimage - color: theme.textColor - } - onClicked: { - mcmenuItem.open() - } - } - } - - Rectangle { - id: nwsseprator - width: parent.width - anchors.top: skillTopRowLayout.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Item { - id: dashinner - width: parent.width - implicitHeight: nwsdesc.height - Layout.minimumHeight: units.gridUnit * 2 - anchors.top: nwsseprator.bottom - anchors.topMargin: 1 - - Text { - id: nwsdesc - wrapMode: Text.Wrap; - anchors.right: ctxImgIcon.left - anchors.left: parent.left - anchors.leftMargin: 2 - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: model.contents.newsDescription - - Component.onCompleted: { - if (!nwsdesc.text) { - nwsdesc.text = model.contents.newsTitle - } - } - } - - Image { - id: ctxImgIcon - anchors.right: parent.right - anchors.margins: units.gridUnit * 0.5 - source: model.contents.newsImgURL - width: 64 - height: parent.height - - Component.onCompleted: { - if (ctxImgIcon.source == "") { - ctxImgIcon.source = "../images/newsicon.png" - } - } - - } - } - - Rectangle { - id: nwsseprator2 - width: parent.width - anchors.top: dashinner.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Rectangle { - id: dashItemSrcMeta - implicitWidth: dashItemSrcName.implicitWidth + units.gridUnit * 1 - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.05 - anchors.top: nwsseprator2.bottom - anchors.topMargin: 1 - color: theme.linkColor - height: units.gridUnit * 1.25 - - Text { - id: dashItemSrcName - wrapMode: Text.Wrap; - anchors.centerIn: parent - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: model.contents.newsSource - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onEntered: { - dashItemSrcMeta.color = theme.textColor - dashItemSrcName.color = theme.backgroundColor - } - onExited: { - dashItemSrcMeta.color = theme.linkColor - dashItemSrcName.color = theme.textColor - } - onClicked: { - Qt.openUrlExternally("https://" + model.contents.newsSource) - } - } - } - } - - Text { - id: dashItemPwrBy - anchors.top: nwsseprator2.bottom - anchors.topMargin: 1 - wrapMode: Text.Wrap; - anchors.right: parent.right - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - font.pixelSize: 10 - text: i18n("Powered By: NewsAPI") - } - } - - Drawer { - id: mcmenuItem - width: dwrpaddedwidth - height: audionewsCardRectbtn.height + shareCardRectbtn.height + removeCardRectbtn.height + disableCardRectbtn.height - edge: Qt.TopEdge - dragMargin: 0 - - Rectangle { - id: menuRectItem - anchors.fill: parent - color: theme.backgroundColor - - Column { - id: menuRectColumn - anchors.fill: parent - - Rectangle { - id: audionewsCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: audionewsCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "media-playback-start" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: audionewsCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: audionewsCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Play / Listen To News Article") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - audionewsCardLabel.color = theme.linkColor - } - onExited:{ - audionewsCardLabel.color = theme.textColor - } - onClicked:{ - mcmenuItem.close() - var sendnewsurl = "getarticle newsurl " + model.contents.newsURL - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [sendnewsurl]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - } - - Rectangle { - id: btnshorzSepr1 - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: shareCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: shareCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "retweet" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: shareCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: shareCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Share News Link") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - shareCardLabel.color = theme.linkColor - } - onExited:{ - shareCardLabel.color = theme.textColor - } - onClicked:{ - mcmenuItem.close() - sharePagePopup.open() - } - } - } - - - Rectangle { - id: btnshorzSepr2 - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: removeCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: removeCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "archive-remove" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: removeCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: removeCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Remove Card") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - removeCardLabel.color = theme.linkColor - } - onExited:{ - removeCardLabel.color = theme.textColor - } - onClicked:{ - dashCardCollectionModel.remove(index) - } - } - } - - Rectangle { - id: btnshorzSepr3 - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: disableCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: disableCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "document-close" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: disableCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: disableCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Disable News Cards") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - disableCardLabel.color = theme.linkColor - } - onExited:{ - disableCardLabel.color = theme.textColor - } - onClicked:{ - dashCardCollectionModel.remove(index) - removeChildCard() - newscardswitch.checked = false - } - } - } - Rectangle { - id: btnshorzSeprEnd - width: parent.width - height: units.gridUnit * 0.75 - color: theme.linkColor - - PlasmaCore.IconItem { - id: closemenuDrawer - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - } - } - } - } - } diff --git a/plasmoid/contents/ui/DashWeatherDelegate.qml b/plasmoid/contents/ui/DashWeatherDelegate.qml deleted file mode 100644 index 1d0b159..0000000 --- a/plasmoid/contents/ui/DashWeatherDelegate.qml +++ /dev/null @@ -1,835 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import QtGraphicalEffects 1.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: dashDelegateItmWeather - height: units.gridUnit * 7.75 - width: cbwidth - units.gridUnit * 0.50 - border.width: 1 - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - property bool expanded: false - - Item { - id: contentdlgtitem - width: parent.width - height: parent.height - - Item { - id: skillTopRowLayout - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: dashHeader.implicitHeight + units.gridUnit * 0.5 - - Text { - id: dashHeader - anchors.left: dashHeaderSeprtr.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - wrapMode: Text.Wrap; - font.bold: true; - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18n("%1 | %2", model.contents.itemWeatherCity, model.contents.itemWeatherTempTypeHourZero) - } - - Image { - id: weatherDashCardIcon - anchors.left: dashHeader.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - source: model.contents.itemWeatherIconTypeHourZero - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - } - - Text { - id: weatherDashCardWind - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 1 - anchors.verticalCenter: parent.verticalCenter - font.bold: true; - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - text: i18n("Wind | %1 meters/sec", model.contents.itemWeatherWindHourZero) - } - - PlasmaCore.SvgItem { - id: dashHeaderSeprtr - anchors { - left: contxtnewsitemmenu.right - leftMargin: units.gridUnit * 0.25 - verticalCenter: parent.verticalCenter - } - height: units.gridUnit * 1 - width: linetopleftvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: dashhdrvertSvg; - imagePath: "widgets/line" - } - } - - ToolButton { - id: contxtnewsitemmenu - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - Image { - id: innrnewitemcontxmenuimage - source: "../images/ctxmenu.png" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: units.gridUnit * 0.60 - height: units.gridUnit * 0.50 - } - ColorOverlay { - anchors.fill: innrnewitemcontxmenuimage - source: innrnewitemcontxmenuimage - color: theme.textColor - } - onClicked: { - mcmenuItem.open() - } - } - } - - Rectangle { - id: nwsseprator - width: parent.width - anchors.top: skillTopRowLayout.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempDateLabel - anchors.top: nwsseprator.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18n("Date: %1 | Time: %2", model.contents.itemWeatherDateHourZero.split(" ")[0], model.contents.itemWeatherDateHourZero.split(" ")[1]) - } - - Rectangle { - id: nwsseprator1 - width: parent.width - anchors.top: weatherDshTempDateLabel.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempMinLabel - anchors.top: nwsseprator1.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Minimum Temperature: %1%2", model.contents.itemWeatherTempMinHourZero, model.contents.itemWeatherMetricType) - } - - Rectangle { - id: nwsseprator2 - width: parent.width - anchors.top: weatherDshTempMinLabel.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempCurrentLabel - anchors.top: nwsseprator2.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Current Temperature: %1%2", model.contents.itemWeatherTempHourZero, model.contents.itemWeatherMetricType) - } - - Rectangle { - id: nwsseprator3 - width: parent.width - anchors.top: weatherDshTempCurrentLabel.bottom - anchors.topMargin: 1 - height: 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempMaxLabel - anchors.top: nwsseprator3.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Maximum Temperature: %1%2", model.contents.itemWeatherTempMaxHourZero, model.contents.itemWeatherMetricType) - } - - PlasmaCore.SvgItem { - id: horizontalSepWeathrCard1 - anchors { - left: contentdlgtitem.left - right: contentdlgtitem.right - top: weatherDshTempMaxLabel.bottom - } - width: 1 - height: horlineweatherextendSvg.elementSize("horizontal-line").height - - elementId: "horizontal-line" - z: 110 - svg: PlasmaCore.Svg { - id: horlineweatherextendSvg; - imagePath: "widgets/line" - } - } - - Item { - id: footerBx - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - height: units.gridUnit * 1.5 - - Rectangle { - id: expandBtnRectBg - height: units.gridUnit * 1.25 - width: units.gridUnit * 1.25 - radius: 100 - color: theme.backgroundColor - anchors.centerIn: parent - z: 400 - - PlasmaCore.ToolTipArea { - id: toolTipExpand - mainText: i18n("Expand Forecast") - anchors.fill: parent - } - - PlasmaCore.ToolTipArea { - id: toolTipCollapse - mainText: i18n("Close") - anchors.fill: parent - } - - PlasmaCore.IconItem { - id: expandWeatherCardBtn - anchors.centerIn: parent - source: "go-down" - width: units.gridUnit * 1.15 - height: units.gridUnit * 1.15 - } - - MouseArea { - anchors.fill: parent - - onClicked: { - if(!expanded){ - dashboardmodelview.positionViewAtIndex(findIndex(model.itemType), ListView.SnapPosition) - dashdelegatelview.height = cbheight - units.gridUnit * 2 - dashDelegateItmWeather.height = dashdelegatelview.height - expanded = true - expandWeatherCardBtn.source = "go-up" - weatherForcastItem.state = "CardExpanded" - } - else if(expanded){ - dashDelegateItmWeather.height = units.gridUnit * 7.75 - dashdelegatelview.height = dashDelegateItmWeather.height - expanded = false - expandWeatherCardBtn.source = "go-down" - weatherForcastItem.state = "CardNotExpanded" - } - } - } - } - } - - Item { - id: extensionFrame - anchors.top: horizontalSepWeathrCard1.bottom - anchors.bottom: footerBx.top - anchors.left: parent.left - anchors.right: parent.right - visible: expanded ? true : false - - Image{ - id: weatherForcastBgImage - anchors.fill: parent - anchors.margins: units.gridUnit * 0.25 - - Component.onCompleted: { - var conditionType = model.contents.itemWeatherTempTypeHourA.toLowerCase(); - if(conditionType.indexOf("scattered") !== -1 && conditionType.indexOf("clouds") !== -1 || conditionType.indexOf("clear") !== -1 || conditionType.indexOf("clouds") !== -1 ){ - weatherForcastBgImage.source = "../images/climatesc.jpg" - } - else if(conditionType.indexOf("rain") !== -1){ - weatherForcastBgImage.source = "../images/rain.gif" - } - else if(conditionType.indexOf("snow") !== -1){ - weatherForcastBgImage.source = "../images/snow.gif" - } - else if(conditionType.indexOf("snow") !== -1){ - weatherForcastBgImage.source = "../images/snow.gif" - } - else if(conditionType.indexOf("haze") !== -1){ - weatherForcastBgImage.source = "../images/haze.gif" - } - else { - weatherForcastBgImage.source = "../images/bluesky.png" - } - } - - - Rectangle { - id: weatherForcastItem - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.topMargin: units.gridUnit * 1 - anchors.bottomMargin: units.gridUnit * 1 - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - state: "CardNotExpanded" - - states: [ - State { - name: "CardExpanded" - PropertyChanges { target: forcastItemExternalRow; width: parent.width } - PropertyChanges { target: forcastItemExternalRow; height: parent.height - units.gridUnit * 2 } - PropertyChanges { target: forcastItemInnerRowA; width: parent.width / 2 } - PropertyChanges { target: forcastItemInnerRowA; height: parent.height } - PropertyChanges { target: forcastItemInnerRowB; width: parent.width / 2 } - PropertyChanges { target: forcastItemInnerRowB; height: parent.height } - PropertyChanges { target: hourAsep0; width: parent.width } - PropertyChanges { target: hourAsep0; height: 2 } - PropertyChanges { target: hourBsep0; width: parent.width } - PropertyChanges { target: hourBsep0; height: 2 } - PropertyChanges { target: hourAsep1; width: parent.width } - PropertyChanges { target: hourAsep1; height: 2 } - PropertyChanges { target: hourBsep1; width: parent.width } - PropertyChanges { target: hourBsep1; height: 2 } - PropertyChanges { target: hourAsep2; width: parent.width } - PropertyChanges { target: hourAsep2; height: 2 } - PropertyChanges { target: hourBsep2; width: parent.width } - PropertyChanges { target: hourBsep2; height: 2 } - PropertyChanges { target: hourAsep3; width: parent.width } - PropertyChanges { target: hourAsep3; height: 2 } - PropertyChanges { target: hourBsep3; width: parent.width } - PropertyChanges { target: hourBsep3; height: 2 } - PropertyChanges { target: forecastItemCreditsFooter; width: parent.width } - PropertyChanges { target: forecastItemCreditsFooter; height: units.gridUnit * 1 } - PropertyChanges { target: toolTipExpand; enabled: false } - PropertyChanges { target: toolTipExpand; visible: false } - PropertyChanges { target: toolTipCollapse; enabled: true } - PropertyChanges { target: toolTipCollapse; visible: true } - - }, - State { - name: "CardNotExpanded" - PropertyChanges { target: forcastItemExternalRow; width: 0 } - PropertyChanges { target: forcastItemExternalRow; height: 0 } - PropertyChanges { target: forcastItemInnerRowA; width: 0 } - PropertyChanges { target: forcastItemInnerRowA; height: 0 } - PropertyChanges { target: forcastItemInnerRowB; width: 0 } - PropertyChanges { target: forcastItemInnerRowB; height: 0 } - PropertyChanges { target: hourAsep0; width: 0 } - PropertyChanges { target: hourAsep0; height: 0 } - PropertyChanges { target: hourBsep0; width: 0 } - PropertyChanges { target: hourBsep0; height: 0 } - PropertyChanges { target: hourAsep1; width: 0 } - PropertyChanges { target: hourAsep1; height: 0 } - PropertyChanges { target: hourBsep1; width: 0 } - PropertyChanges { target: hourBsep1; height: 0 } - PropertyChanges { target: hourAsep2; width: 0 } - PropertyChanges { target: hourAsep2; height: 0 } - PropertyChanges { target: hourBsep2; width: 0 } - PropertyChanges { target: hourBsep2; height: 0 } - PropertyChanges { target: hourAsep3; width: 0 } - PropertyChanges { target: hourAsep3; height: 0 } - PropertyChanges { target: hourBsep3; width: 0 } - PropertyChanges { target: hourBsep3; height: 0 } - PropertyChanges { target: forecastItemCreditsFooter; width: 0 } - PropertyChanges { target: forecastItemCreditsFooter; height: 0 } - PropertyChanges { target: toolTipExpand; enabled: true } - PropertyChanges { target: toolTipExpand; visible: true } - PropertyChanges { target: toolTipCollapse; enabled: false } - PropertyChanges { target: toolTipCollapse; visible: false } - } - ] - - Row{ - id: forcastItemExternalRow - spacing: 4 - - Item { - id: forcastItemInnerRowA - - Text { - id: weatherDshDateLabelHourA - anchors.top: parent.top - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("D stand for Day, T stands for Time", "D: %1 | T: %2", model.contents.itemWeatherDateHourA.split(" ")[0], model.contents.itemWeatherDateHourA.split(" ")[1]) - } - - Rectangle { - id: hourAsep0 - anchors.top: weatherDshDateLabelHourA.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshConditionLabelHourA - anchors.top: hourAsep0.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18n("Condition: %1", model.contents.itemWeatherTempTypeHourA) - } - - Image { - id: weatherDashCardIconHourA - anchors.left: weatherDshConditionLabelHourA.right - anchors.verticalCenter: weatherDshConditionLabelHourA.verticalCenter - source: model.contents.itemWeatherIconTypeHourA - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - } - - Rectangle { - id: hourAsep1 - anchors.top: weatherDshConditionLabelHourA.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshWindLabelHourA - anchors.top: hourAsep1.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18n("Wind: %1 meters/sec", model.contents.itemWeatherWindHourA) - } - - Rectangle { - id: hourAsep2 - anchors.top: weatherDshWindLabelHourA.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempMinLabelHourA - anchors.top: hourAsep2.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Min: %1%2", model.contents.itemWeatherTempHourA, model.contents.itemWeatherMetricType) - } - - Rectangle { - id: hourAsep3 - width: expanded ? 0 : parent.width - anchors.top: weatherDshTempMinLabelHourA.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempMaxLabelHourA - anchors.top: hourAsep3.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Max: %1%2", model.contents.itemWeatherTempHourA, model.contents.itemWeatherMetricType) - } - } - - Item { - id: forcastItemInnerRowB - - Text { - id: weatherDshDateLabelHourB - anchors.top: parent.top - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("D stand for Day, T stands for Time", "D: %1 | T: %2", model.contents.itemWeatherDateHourB.split(" ")[0], model.contents.itemWeatherDateHourB.split(" ")[1]) - } - - Rectangle { - id: hourBsep0 - anchors.top: weatherDshDateLabelHourB.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshConditionLabelHourB - anchors.top: hourBsep0.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18n("Condition: %1", model.contents.itemWeatherTempTypeHourB) - } - - Image { - id: weatherDashCardIconHourB - anchors.left: weatherDshConditionLabelHourB.right - anchors.verticalCenter: weatherDshConditionLabelHourB.verticalCenter - source: model.contents.itemWeatherIconTypeHourB - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - } - - Rectangle { - id: hourBsep1 - anchors.top: weatherDshConditionLabelHourB.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshWindLabelHourB - anchors.top: hourBsep1.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18n("Wind: %1 meters/sec", model.contents.itemWeatherWindHourB) - } - - Rectangle { - id: hourBsep2 - anchors.top: weatherDshWindLabelHourB.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempMinLabelHourB - anchors.top: hourBsep2.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Min: %1%2", model.contents.itemWeatherTempHourB, model.contents.itemWeatherMetricType) - } - - Rectangle { - id: hourBsep3 - width: expanded ? 0 : parent.width - anchors.top: weatherDshTempMinLabelHourB.bottom - anchors.topMargin: expanded ? 0 : 1 - height: expanded ? 0 : 2 - color: theme.linkColor - } - - Text { - id: weatherDshTempMaxLabelHourB - anchors.top: hourBsep3.bottom - anchors.topMargin: 1 - anchors.left: parent.left - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - color: PlasmaCore.ColorScope.textColor - wrapMode: Text.WordWrap; - font.bold: true; - text: i18nc("%1 is value, %2 is unit (Celsius or Fahrenheit degree)", "Max: %1%2", model.contents.itemWeatherTempHourB, model.contents.itemWeatherMetricType) - } - } - } - - Rectangle { - id: forecastItemCreditsFooter - anchors.bottom: parent.bottom - color: theme.linkColor - - PlasmaComponents.Label{ - id: creditOWM - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.15 - anchors.verticalCenter: parent.verticalCenter - text: i18n("Powered By: OpenWeatherMap") - } - } - } - } - } - } - - Drawer { - id: mcmenuItem - width: dwrpaddedwidth - height: removeCardRectbtn.height + disableCardRectbtn.height - edge: Qt.TopEdge - dragMargin: 0 - - Rectangle { - id: menuRectItem - anchors.fill: parent - color: theme.backgroundColor - - Column { - id: menuRectColumn - anchors.fill: parent - - Rectangle { - id: removeCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: removeCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "archive-remove" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: removeCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: removeCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Remove Card") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - removeCardLabel.color = theme.linkColor - } - onExited:{ - removeCardLabel.color = theme.textColor - } - onClicked:{ - dashCardCollectionModel.remove(index) - removeChildCard() - } - } - } - - Rectangle { - id: btnshorzSepr - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: disableCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: disableCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "document-close" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: disableCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: disableCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Disable Weather Cards") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - disableCardLabel.color = theme.linkColor - } - onExited:{ - disableCardLabel.color = theme.textColor - } - onClicked:{ - weathercardswitch.checked = false - dashCardCollectionModel.remove(index) - removeChildCard() - } - } - } - - Rectangle { - id: btnshorzSeprEnd - width: parent.width - height: units.gridUnit * 0.75 - color: theme.linkColor - - PlasmaCore.IconItem { - id: closemenuDrawer - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - } - } - } - } - } diff --git a/plasmoid/contents/ui/DashboardDelegate.qml b/plasmoid/contents/ui/DashboardDelegate.qml deleted file mode 100644 index 797f289..0000000 --- a/plasmoid/contents/ui/DashboardDelegate.qml +++ /dev/null @@ -1,234 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.components 3.0 as PlasmaComponents3 - -Item { - id: dashdelegteType - height: dashdelegatelview.height - width: parent.width - property Component delegateComponentDisclaimer: Qt.createComponent("DisclaimerCardDelegate.qml") - property Component delegateComponentWeather: Qt.createComponent("DashWeatherDelegate.qml") - property Component delegateComponentNews: Qt.createComponent("DashNewsDelegate.qml") - property Component delegateComponentCrypto: Qt.createComponent("DashCryptoDelegate.qml") - - Component.onCompleted: { - filterSwitchDash(iType, iObj) - } - - function filterSwitchDash(iType, iObj){ - switch(iType){ - case "Disclaimer": - filterDashDisclaimerObj() - break - case "DashNews": - filterDashNewsObj(iObj) - break - case "DashWeather": - filterDashWeatherObj(iObj) - break - case "DashCryptoPrice": - filterDashCryptoObj(iObj) - break - } - } - - function filterDashDisclaimerObj() { - dashCardCollectionModel.append({itemType: "Disclaimer", itemAt: 0, contents:{}}) - dashdelegatelview.delegate = delegateComponentDisclaimer - } - - function filterDashWeatherObj(weatherobj){ - var filteredMetric - if(weatherMetric.indexOf('metric') != -1){ - filteredMetric = "°c" - } - else if (weatherMetric.indexOf('imperial') != -1){ - filteredMetric = "°f" - } - if(weatherobj){ - var filteredWeatherObject = JSON.parse(weatherobj) - var weatherIcnTypeHourZero = "http://openweathermap.org/img/w/" + filteredWeatherObject.list[0].weather[0].icon + ".png" - var weatherIcnTypeHourA = "http://openweathermap.org/img/w/" + filteredWeatherObject.list[1].weather[0].icon + ".png" - var weatherIcnTypeHourB = "http://openweathermap.org/img/w/" + filteredWeatherObject.list[2].weather[0].icon + ".png" - var weatherdateHourZero = filteredWeatherObject.list[0].dt_txt - var weatherdateHourA = filteredWeatherObject.list[1].dt_txt - var weatherdateHourB = filteredWeatherObject.list[2].dt_txt - dashCardCollectionModel.append({itemType: "DashWeather", itemAt: 1, contents:{itemWeatherTempHourZero: filteredWeatherObject.list[0].main.temp, itemWeatherTempHourA: filteredWeatherObject.list[1].main.temp, itemWeatherTempHourB: filteredWeatherObject.list[2].main.temp, itemWeatherTempMinHourZero: filteredWeatherObject.list[0].main.temp_min, itemWeatherTempMinHourA: filteredWeatherObject.list[1].main.temp_min, itemWeatherTempMinHourB: filteredWeatherObject.list[2].main.temp_min, itemWeatherTempMaxHourZero: filteredWeatherObject.list[0].main.temp_max, itemWeatherTempMaxHourA: filteredWeatherObject.list[1].main.temp_max, itemWeatherTempMaxHourB: filteredWeatherObject.list[2].main.temp_max, itemWeatherTempTypeHourZero: filteredWeatherObject.list[0].weather[0].main, itemWeatherTempTypeHourA: filteredWeatherObject.list[1].weather[0].main, itemWeatherTempTypeHourB: filteredWeatherObject.list[2].weather[0].main, itemWeatherMetricType: filteredMetric, itemWeatherIconTypeHourZero: weatherIcnTypeHourZero, itemWeatherIconTypeHourA: weatherIcnTypeHourA, itemWeatherIconTypeHourB: weatherIcnTypeHourB, itemWeatherWindHourZero: filteredWeatherObject.list[0].wind.speed, itemWeatherWindHourA: filteredWeatherObject.list[1].wind.speed, itemWeatherWindHourB: filteredWeatherObject.list[2].wind.speed, itemWeatherCity: filteredWeatherObject.city.name, itemWeatherDateHourZero: weatherdateHourZero, itemWeatherDateHourA: weatherdateHourA, itemWeatherDateHourB: weatherdateHourB}}) - dashdelegatelview.delegate = delegateComponentWeather - } - } - - function filterDashNewsObj(newsobj){ - if(newsobj){ - var filteredNewsObject = JSON.parse(newsobj) - for (var i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.components 3.0 as PlasmaComponents3 - -Item { - id: dashbdtypebg - width: cbwidth - height: cbheight - property alias dashlvmodel: dashboardmodelview.model - property alias dashlvdelegate: dashboardmodelview.delegate - - PulleyItemDash { - id: dashlistPulley - visible: true - barColor: theme.linkColor - anchors.bottom: parent.bottom - anchors.bottomMargin: units.gridUnit * 0.10 - _isVisible: true - z: 900 - } - -ListView { - id: dashboardmodelview - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - height: cbheight / 1.05 - model: dashLmodel - spacing: 2 - focus: false - interactive: true - clip: true; - delegate: DashboardDelegate{} - ScrollBar.vertical: dashscrollBar - } - - PlasmaComponents3.ScrollBar { - id: dashscrollBar - orientation: Qt.Vertical - interactive: true - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - } -} - diff --git a/plasmoid/contents/ui/Disclaimer.qml b/plasmoid/contents/ui/Disclaimer.qml deleted file mode 100644 index c243f82..0000000 --- a/plasmoid/contents/ui/Disclaimer.qml +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -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 { -anchors.fill: parent - -Rectangle{ -id: disclaimerHeadingBg -color: theme.linkColor -anchors.left: parent.left -anchors.top: parent.top -anchors.right: parent.right -height: units.gridUnit * 3 - - Text { - id: disclaimerHeading1 - height: 28 - text: i18n("Let's Continue?") - font.pointSize: 24 - elide: Text.ElideLeft - font.family: "Verdana" - wrapMode: Text.WrapAnywhere - font.bold: true - renderType: Text.QtRendering - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: parent.top - anchors.topMargin: units.gridUnit * 0.5 - color: theme.backgroundColor - } -} - - - Text { - id: disclaimerBody1 - height: contentHeight - text: i18n("Mycroft by default is powered by a cloud-based speech to text service. Mycroft gives you the ability to change speech to text services or use a locally configured one within their settings at home.mycroft.ai. If you agree to the default usage of Mycroft’s speech to text service, please continue. Also remember you can always choose to turn off or mute Mycroft when you do not wish to use it.") - font.pointSize: 10 - font.family: "Verdana" - wrapMode: Text.Wrap - renderType: Text.QtRendering - horizontalAlignment: Text.AlignHCenter - anchors.top: disclaimerHeadingBg.bottom - anchors.topMargin: 18 - anchors.right: parent.right - anchors.rightMargin: 5 - anchors.left: parent.left - anchors.leftMargin: 5 - color: theme.textColor - } - - Item { - id: noticemsg - anchors.top: disclaimerBody1.bottom - anchors.topMargin: 20 - anchors.right: parent.right - anchors.left: parent.left - height: disclaimerBody2.contentHeight - - Text { - id: disclaimerBody2 - height: contentHeight - text: i18n("To start using Mycroft toggle the switch in the upper right corner!") - font.italic: true - font.pointSize: 10 - font.family: "Verdana" - wrapMode: Text.WrapAnywhere - renderType: Text.QtRendering - horizontalAlignment: Text.AlignHCenter - anchors.right: parent.right - anchors.rightMargin: 5 - anchors.left: parent.left - anchors.leftMargin: 5 - color: theme.textColor - } - } -} diff --git a/plasmoid/contents/ui/DisclaimerCardDelegate.qml b/plasmoid/contents/ui/DisclaimerCardDelegate.qml deleted file mode 100644 index adcd914..0000000 --- a/plasmoid/contents/ui/DisclaimerCardDelegate.qml +++ /dev/null @@ -1,278 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Rectangle { - id: dashDelegateItm - height: contentdlgtitem.height - width: cbwidth - units.gridUnit * 0.50 - border.width: 1 - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - Item { - id: contentdlgtitem - width: parent.width - height: dashHeader.height + dashHeaderSeprtr.height + nwsseprator.height + dashinner.height - - Item { - id: skillTopRowLayout - anchors.top: parent.top - anchors.topMargin: units.gridUnit * 0.25 - anchors.left: parent.left - anchors.right: parent.right - implicitHeight: dashHeader.height - - Text { - id: dashHeader - anchors.left: dashHeaderSeprtr.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - wrapMode: Text.Wrap - font.bold: true - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - text: i18n("Let's Continue?") - color: PlasmaCore.ColorScope.textColor - } - - PlasmaCore.SvgItem { - id: dashHeaderSeprtr - anchors { - left: contxtnewsitemmenu.right - leftMargin: units.gridUnit * 0.25 - verticalCenter: parent.verticalCenter - } - height: units.gridUnit * 1 - width: linetopleftvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: dashhdrvertSvg; - imagePath: "widgets/line" - } - } - - ToolButton { - id: contxtnewsitemmenu - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - Image { - id: innrnewitemcontxmenuimage - source: "../images/ctxmenu.png" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: units.gridUnit * 0.60 - height: units.gridUnit * 0.50 - } - ColorOverlay { - anchors.fill: innrnewitemcontxmenuimage - source: innrnewitemcontxmenuimage - color: theme.textColor - } - onClicked: { - mcmenuItem.open() - } - } - } - - Rectangle { - id: nwsseprator - width: parent.width - anchors.top: skillTopRowLayout.bottom - anchors.topMargin: units.gridUnit * 0.25 - height: 2 - color: theme.linkColor - } - - Item { - id: dashinner - width: parent.width - implicitHeight: nwsdesc.height - Layout.minimumHeight: units.gridUnit * 2 - anchors.top: nwsseprator.bottom - anchors.topMargin: 1 - - Text { - id: nwsdesc - wrapMode: Text.Wrap; - anchors.right: parent.right - anchors.left: parent.left - anchors.leftMargin: 2 - color: PlasmaCore.ColorScope.textColor - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - text: i18n("Mycroft by default is powered by a cloud-based speech to text service. Mycroft gives you the ability to change speech to text services or use a locally configured one within their settings at home.mycroft.ai.") - } - } - } - - Drawer { - id: mcmenuItem - width: dwrpaddedwidth - height: removeCardRectbtn.height + disableCardRectbtn.height - edge: Qt.TopEdge - dragMargin: 0 - - Rectangle { - id: menuRectItem - anchors.fill: parent - color: theme.backgroundColor - - Column { - id: menuRectColumn - anchors.fill: parent - - Rectangle { - id: removeCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: removeCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "archive-remove" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: removeCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: removeCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Remove Card") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - removeCardLabel.color = theme.linkColor - } - onExited:{ - removeCardLabel.color = theme.textColor - } - onClicked:{ - dashCardCollectionModel.remove(index) - removeChildCard() - } - } - } - - Rectangle { - id: btnshorzSepr - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: disableCardRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: disableCardIcon - anchors.verticalCenter: parent.verticalCenter - source: "document-close" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: disableCardSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: disableCardLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Disable Disclaimer Card") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - disableCardLabel.color = theme.linkColor - } - onExited:{ - disableCardLabel.color = theme.textColor - } - onClicked:{ - disclaimercardswitch.checked = false - dashCardCollectionModel.remove(index) - removeChildCard() - } - } - } - - Rectangle { - id: btnshorzSeprEnd - width: parent.width - height: units.gridUnit * 0.75 - color: theme.linkColor - - PlasmaCore.IconItem { - id: closemenuDrawer - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - } - } - } - } - } diff --git a/plasmoid/contents/ui/DocumentFileDelegate.qml b/plasmoid/contents/ui/DocumentFileDelegate.qml deleted file mode 100644 index 6293fc2..0000000 --- a/plasmoid/contents/ui/DocumentFileDelegate.qml +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtMultimedia 5.8 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: documentFileDelegateItm - implicitHeight: documentFileDelegateInner.height - color: Qt.darker(theme.backgroundColor, 1.2) - width: cbwidth - - Item { - id: documentFileDelegateInner - implicitHeight: Math.max(documentInnerInfoColumn.height, playDocumentBtn.height + units.gridUnit * 1) - width: parent.width - - PlasmaCore.IconItem { - id: documentImgType - source: "document-new" - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - anchors.verticalCenter: parent.verticalCenter - } - - Item { - id: documentInnerInfoColumn - implicitHeight: documentFileName.implicitHeight + sprTrinnerDocument.height + documentFileLoc.implicitHeight + units.gridUnit * 0.50 - anchors.left: documentImgType.right - anchors.leftMargin: units.gridUnit * 0.30 - anchors.right: playDocumentBtn.left - anchors.rightMargin: units.gridUnit * 0.30 - - PlasmaComponents.Label { - id: documentFileName - color: theme.textColor - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.topMargin: units.gridUnit * 0.25 - wrapMode: Text.Wrap - - Component.onCompleted: { - var filterName = InputQuery.toString(); - documentFileName.text = filterName.match(/\/([^\/]+)\/?$/)[1] - } - } - - Rectangle { - id: sprTrinnerDocument - anchors.left: parent.left - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 1 - anchors.top: documentFileName.bottom - anchors.topMargin: units.gridUnit * 0.15 - color: theme.linkColor - height: units.gridUnit * 0.1 - } - - PlasmaComponents.Label { - id: documentFileLoc - color: theme.linkColor - font.pointSize: 9 - anchors.left: parent.left - anchors.right: parent.right - anchors.top: sprTrinnerDocument.bottom - - wrapMode: Text.Wrap - Component.onCompleted: { - documentFileLoc.text = "Location: " + InputQuery + "" - } - } - } - - PlasmaComponents.Button { - id: playDocumentBtn - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.75 - anchors.verticalCenter: parent.verticalCenter - width: units.gridUnit * 3.5 - height: units.gridUnit * 3 - text: i18n("Open") - - onClicked: { - var docFile = Qt.resolvedUrl(InputQuery) - Qt.openUrlExternally(docFile) - } - } - } - } diff --git a/plasmoid/contents/ui/FallbackWebSearchType.qml b/plasmoid/contents/ui/FallbackWebSearchType.qml deleted file mode 100644 index 2810472..0000000 --- a/plasmoid/contents/ui/FallbackWebSearchType.qml +++ /dev/null @@ -1,85 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa -import QtWebKit 3.0 -import QtWebKit.experimental 1.0 - -Column { - spacing: 6 - anchors.right: parent.right - - Row { - id: messageRow - spacing: 6 - - Item { - id: messageRect - width: cbwidth - height: newolfFlick.height - - Flickable { - id: newolfFlick - width: messageRect.width - height: units.gridUnit * 10 - contentHeight: wikiview.height - clip: true - - WebView { - id: wikiview - height: units.gridUnit * 20 - width: parent.width - url: InputQuery - experimental.preferredMinimumContentsWidth: cbwidth - experimental.useDefaultContentItemSize: false - experimental.transparentBackground: true - experimental.userStyleSheets: "../code/fallback.css" - opacity: 0 - - onLoadingChanged: { - switch (loadRequest.status) - { - case WebView.LoadSucceededStatus: - opacity = 1 - return - case WebView.LoadStartedStatus: - break - case WebView.LoadStoppedStatus: - break - case WebView.LoadFailedStatus: - break - } - opacity = 0 - } - - } - - - ScrollIndicator.vertical: ScrollIndicator { } - - } - } - } - } - diff --git a/plasmoid/contents/ui/FullRepresentation.qml b/plasmoid/contents/ui/FullRepresentation.qml new file mode 100644 index 0000000..91b2b64 --- /dev/null +++ b/plasmoid/contents/ui/FullRepresentation.qml @@ -0,0 +1,228 @@ +/* Copyright 2019 Aditya Mehra + Copyright 2018 Marco Martin + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 as Controls +import QtQuick.Layouts 1.3 +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 +import org.kde.plasma.plasmoid 2.0 +import org.kde.kirigami 2.5 as Kirigami +import org.kde.private.mycroftplasmoid 1.0 as MycroftPlasmoid +import Mycroft 1.0 as Mycroft + +Item { + id: root + implicitWidth: Kirigami.Units.gridUnit * 20 + implicitHeight: Kirigami.Units.gridUnit * 32 + property bool cfg_notifications: plasmoid.configuration.notifications + + Item { + id: topBar + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + height: Kirigami.Units.gridUnit * 4 + + ColumnLayout{ + anchors.fill: parent + + TopBarViewComponent { + id: topBarView + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 2 + } + + PlasmaCore.SvgItem { + Layout.fillWidth: true + Layout.preferredHeight: horlineSvg.elementSize("horizontal-line").height + + elementId: "horizontal-line" + svg: PlasmaCore.Svg { + id: horlineSvg2; + imagePath: "widgets/line" + } + } + + PlasmaComponents.TabBar { + id: tabBar + visible: true + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 1.5 + + PlasmaComponents.TabButton { + id: mycroftTab + iconSource: "go-home" + text: i18n("Conversation") + } + + PlasmaComponents.TabButton { + id: mycroftSkillsTab + iconSource: "games-hint" + text: i18n("Hints & Tips") + } + + PlasmaComponents.TabButton { + id: mycroftMSMinstTab + iconSource: "kmouth-phresebook-new" + text: i18n("Skill Browser") + } + } + + PlasmaCore.SvgItem { + Layout.fillWidth: true + Layout.preferredHeight: horlineSvg.elementSize("horizontal-line").height + + elementId: "horizontal-line" + svg: PlasmaCore.Svg { + id: horlineSvg; + imagePath: "widgets/line" + } + } + } + } + + ColumnLayout { + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: bottomBar.top + anchors.top: topBar.bottom + anchors.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing + opacity: Mycroft.MycroftController.status == Mycroft.MycroftController.Open + visible: tabBar.currentTab == mycroftTab; + + Behavior on opacity { + OpacityAnimator { + duration: Kirigami.Units.longDuration + easing.type: Easing.InOutCubic + } + } + + Item { + id: delegateItem + Layout.fillWidth: true + Layout.fillHeight: true + + Controls.Popup { + id: audioRecorder + width: 300 + height: 125 + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + x: (root.width - width) / 2 + y: (root.height - height) / 2 + + RemoteStt { + id: remoteSttInstance + } + + onOpenedChanged: { + if(audioRecorder.opened){ + remoteSttInstance.record = true; + } else { + remoteSttInstance.record = false; + } + } + } + + Mycroft.SkillView { + id: skillView + anchors.fill: parent + Kirigami.Theme.colorSet: Kirigami.Theme.View + anchors.margins: Kirigami.Units.largeSpacing + clip: true + onCurrentItemChanged: { + backgroundVisible = false + } + + Connections { + id: mycroftConnection + target: Mycroft.MycroftController + + onFallbackTextRecieved: { + Mycroft.MycroftController.sendRequest("mycroft.desktop.applet.show_conversationview", {}) + if (!plasmoid.expanded && cfg_notifications == true) { + var post = data.utterance; + var title = "Mycroft's Reply:" + var notiftext = " " + post; + MycroftPlasmoid.Notify.mycroftResponse(title, notiftext); + } + } + } + } + } + } + + Item { + id: bottomBar + anchors.bottom: root.bottom + anchors.left: root.left + anchors.right: root.right + height: Kirigami.Units.gridUnit * 2 + + BottomBarViewComponent { + id: bottomBarView + } + } + + Image { + anchors.centerIn: parent + opacity: Mycroft.MycroftController.status != Mycroft.MycroftController.Open + source: "../images/logo.png" + + Behavior on opacity { + OpacityAnimator { + duration: Kirigami.Units.longDuration + easing.type: Easing.InOutCubic + } + } + } + + ColumnLayout { + id: mycroftSkillscolumntab + visible: tabBar.currentTab == mycroftSkillsTab; + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: bottomBar.top + anchors.top: topBar.bottom + anchors.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing + anchors.bottomMargin: Kirigami.Units.smallSpacing + + HintsViewComponent { + id: hintsView + } + } + + ColumnLayout { + id: mycroftMsmColumn + visible: tabBar.currentTab == mycroftMSMinstTab; + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: bottomBar.top + anchors.top: topBar.bottom + anchors.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing + anchors.bottomMargin: Kirigami.Units.smallSpacing + + SkillsInstallerComponent{ + id: skillsInstallerView + } + } +} diff --git a/plasmoid/contents/ui/SkillModel.qml b/plasmoid/contents/ui/HintsModel.qml similarity index 60% rename from plasmoid/contents/ui/SkillModel.qml rename to plasmoid/contents/ui/HintsModel.qml index 44b24b6..26f58c0 100644 --- a/plasmoid/contents/ui/SkillModel.qml +++ b/plasmoid/contents/ui/HintsModel.qml @@ -1,105 +1,104 @@ - -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ import QtQuick 2.9 ListModel { id: skillshintmodel ListElement { Pic: "../images/alarm.png" Skill: "Alarm" CommandList: [ - ListElement { Commands: "Hey Mycroft, Set an alarm for 9 pm" }, - ListElement { Commands: "Hey Mycroft, Cancel alarm" } + ListElement { Commands: "Hey Mycroft, Set an alarm for 9 pm" }, + ListElement { Commands: "Hey Mycroft, Cancel alarm" } ] } ListElement { Pic: "../images/dateandtime.png" Skill: "Date & Time" CommandList: [ - ListElement { Commands: "Hey Mycroft, What is the current time" }, - ListElement { Commands: "Hey Mycroft, What is the date today" } + ListElement { Commands: "Hey Mycroft, What is the current time" }, + ListElement { Commands: "Hey Mycroft, What is the date today" } ] } ListElement { Pic: "../images/desktop.png" Skill: "Desktop" CommandList: [ - ListElement { Commands: "Hey Mycroft, Open firefox"}, - ListElement { Commands: "Hey Mycroft, Open konsole"} + ListElement { Commands: "Hey Mycroft, Open firefox"}, + ListElement { Commands: "Hey Mycroft, Open konsole"} ] } ListElement { Pic: "../images/joke.png" Skill: "Joke" CommandList: [ - ListElement {Commands: "Hey Mycroft, Tell me a joke"}, - ListElement {Commands: "Hey Mycroft, Sing for me"} + ListElement {Commands: "Hey Mycroft, Tell me a joke"}, + ListElement {Commands: "Hey Mycroft, Sing for me"} ] } ListElement { Pic: "../images/spell.png" Skill: "Spell" CommandList: [ - ListElement {Commands: "Hey Mycroft, Spell hello"}, - ListElement {Commands: "Hey Mycroft, Spell mycroft"} + ListElement {Commands: "Hey Mycroft, Spell hello"}, + ListElement {Commands: "Hey Mycroft, Spell mycroft"} ] } ListElement { Pic: "../images/productivity.png" Skill: "Productivity" CommandList: [ - ListElement {Commands: "Hey Mycroft, What is the stock price of nasdaq"}, - ListElement {Commands: "Hey Mycroft, What is the current price of oil"} + ListElement {Commands: "Hey Mycroft, What is the stock price of nasdaq"}, + ListElement {Commands: "Hey Mycroft, What is the current price of oil"} ] } ListElement { Pic: "../images/wikip.png" Skill: "WiKi" CommandList: [ - ListElement {Commands: "Hey Mycroft, What is the distance to the moon"}, - ListElement {Commands: "Hey Mycroft, What is relativity"} + ListElement {Commands: "Hey Mycroft, What is the distance to the moon"}, + ListElement {Commands: "Hey Mycroft, What is relativity"} ] } ListElement { Pic: "../images/wolfram.png" Skill: "Wolfram Alpha" CommandList: [ - ListElement {Commands: "Hey Mycroft, What is PI to 10 digits"}, - ListElement {Commands: "Hey Mycroft, What is 2+2"} + ListElement {Commands: "Hey Mycroft, What is PI to 10 digits"}, + ListElement {Commands: "Hey Mycroft, What is 2+2"} ] } ListElement { Pic: "../images/weather.png" Skill: "Weather" CommandList: [ - ListElement {Commands: "Hey Mycroft, What is the current weather"}, - ListElement {Commands: "Hey Mycroft, Current weather in Tokyo"} + ListElement {Commands: "Hey Mycroft, What is the current weather"}, + ListElement {Commands: "Hey Mycroft, Current weather in Tokyo"} ] } } diff --git a/plasmoid/contents/ui/HintsView.qml b/plasmoid/contents/ui/HintsView.qml new file mode 100644 index 0000000..e1986e3 --- /dev/null +++ b/plasmoid/contents/ui/HintsView.qml @@ -0,0 +1,93 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 as Controls +import QtQuick.Layouts 1.3 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.components 3.0 as PlasmaComponents3 +import org.kde.plasma.extras 2.0 as PlasmaExtras +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + + Kirigami.AbstractCard { + id: skillDelegate; + + contentItem: Item { + implicitWidth: delegateLayout.implicitWidth; + implicitHeight: delegateLayout.implicitHeight; + + ColumnLayout { + id: delegateLayout + anchors { + left: parent.left; + top: parent.top; + right: parent.right; + } + + Kirigami.Heading { + id: skillName + Layout.fillWidth: true; + wrapMode: Text.WordWrap; + font.bold: true; + text: qsTr(modelData.title); + level: 3; + color: Kirigami.Theme.textColor; + } + + RowLayout { + id: skillTopRowLayout + spacing: Kirigami.Units.largeSpacing + Layout.fillWidth: true; + + PlasmaCore.IconItem { + id: innerskImg + source: "curve-connector"; + //fillMode: PreserveAspectFit + Layout.preferredWidth: innerskImg.width + Layout.preferredHeight: innerskImg.height + width: Kirigami.Units.gridUnit * 2 + height: Kirigami.Units.gridUnit * 2 + } + + ColumnLayout { + id: innerskillscolumn + spacing: 2; + Layout.fillHeight: true + Controls.Label { + wrapMode: Text.WordWrap; + Layout.fillWidth: true; + color: Kirigami.Theme.textColor; + text: modelData.examples[1]; + } + Controls.Label { + wrapMode: Text.WordWrap; + Layout.fillWidth: true; + color: Kirigami.Theme.textColor; + text: modelData.examples[2]; + } + } + } + } + } + } diff --git a/plasmoid/contents/ui/HintsViewComponent.qml b/plasmoid/contents/ui/HintsViewComponent.qml new file mode 100644 index 0000000..477d7fc --- /dev/null +++ b/plasmoid/contents/ui/HintsViewComponent.qml @@ -0,0 +1,91 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 +import QtQuick.Layouts 1.3 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.components 3.0 as PlasmaComponents3 +import org.kde.plasma.extras 2.0 as PlasmaExtras +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + +Rectangle { + Layout.fillWidth: true + Layout.fillHeight: true + color: Kirigami.Theme.backgroundColor + property var modelCreatedObject + + Component.onCompleted: { + createHintModel() + } + + function createHintModel(){ + var hintList = [] + var defaultFold = '/opt/mycroft/skills' + var fileToFind = "README.md" + var getList = Mycroft.FileReader.checkForMeta(defaultFold, fileToFind) + for(var i=0; i < getList.length; i++){ + var fileParse = Mycroft.FileReader.read(getList[i]+"/"+fileToFind); + var matchedRegex = getImgSrc(fileParse) + var matchedExamples = getExamples(fileParse) + var matchedCategory = getCategory(fileParse) + if(matchedRegex !== null && matchedRegex.length > 0 && matchedExamples !== null && matchedExamples.length > 0 && matchedCategory !== null && matchedCategory.length > 0) { + var metaFileObject = { + imgSrc: matchedRegex[1], + title: matchedRegex[2], + category: matchedCategory[1], + examples: matchedExamples + } + hintList.push(metaFileObject); + } + } + modelCreatedObject = hintList + } + + function getImgSrc(fileText){ + var re = new RegExp(/]*src='([^']*)'.*\/>\s(.*)/g); + var match = re.exec(fileText); + return match; + } + + function getExamples(fileText){ + var re = new RegExp(/Examples \n.*"(.*)"\n\*\s"(.*)"/g); + var match = re.exec(fileText); + return match; + } + + function getCategory(fileText){ + var re = new RegExp(/## Category\n\*\*(.*)\*\*/g); + var match = re.exec(fileText); + return match; + } + + Kirigami.CardsListView { + id: skillslistmodelview + anchors.fill: parent; + clip: true; + model: modelCreatedObject + delegate: HintsView{} + } +} diff --git a/plasmoid/contents/ui/ImgRecogType.qml b/plasmoid/contents/ui/ImgRecogType.qml deleted file mode 100644 index 909fec7..0000000 --- a/plasmoid/contents/ui/ImgRecogType.qml +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras - -Column { - id: colmsg - spacing: 6 - anchors.right: parent.right - - readonly property bool sentByMe: model.recipient !== "User" - //property alias mssg: messageText.text - - Row { - id: messageRow - spacing: 6 - - Rectangle { - id: messageRect - width: cbwidth - radius: 2 - height: messageText.implicitHeight - color: "#222" - - Image { - id: messageText - anchors.top: parent.top - anchors.bottom: buttnRow.top - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: 5 - fillMode: Image.PreserveAspectCrop - source: model.InputQuery - sourceSize.width: cbwidth - sourceSize.height: units.gridUnit * 10 - } - - Row { - id: buttnRow - height: units.gridUnit * 2 - anchors.bottom: parent.bottom - - PlasmaComponents.Button { - id: generalImgRecog - width: cbwidth / 2 - height: units.gridUnit * 2 - text: i18n("Broad Recognition") - - onClicked: { - var irecogmsgsend = innerset.customrecog - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [irecogmsgsend + " " + model.InputQuery]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - PlasmaComponents.Button { - id: ocrImageRecog - width: cbwidth / 2 - height: units.gridUnit * 2 - text: i18n("OCR Recognition") - - onClicked: { - var irecogmsgsend = innerset.customocrrecog - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [irecogmsgsend + " " + model.InputQuery]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - } - } - } - } diff --git a/plasmoid/contents/ui/LeftBarAnim.qml b/plasmoid/contents/ui/LeftBarAnim.qml deleted file mode 100644 index 0e28879..0000000 --- a/plasmoid/contents/ui/LeftBarAnim.qml +++ /dev/null @@ -1,547 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 - -Item { -property bool wsocketMsg: false - -function wsocmsganimtoggle() { onreadyanim.running = true; } - - SequentialAnimation { - id: onconanim - ParallelAnimation{ - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: 0 - to: 9 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: -13 - to: -9 - duration: 300 - } - } - - ParallelAnimation{ - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: 9 - to: 10.5 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: -9 - to: -6 - duration: 300 - } - } - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: 10.5 - to: 11.5 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: -6 - to: 6 - duration: 300 - } - } - - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: 11.5 - to: 10.5 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: 6 - to: 9 - duration: 300 - } - } - - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: 10.5 - to: 0 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: 9 - to: 13 - duration: 300 - } - } - - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: 0 - to: -9 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: 13 - to: 9 - duration: 300 - } - } - - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: -9 - to: -10.5 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: 9 - to: 6 - duration: 300 - } - } - - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: -10.5 - to: -11.5 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: 6 - to: -6 - duration: 300 - } - } - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: -11.5 - to: -10.5 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: -6 - to: -9 - duration: 300 - } - } - ParallelAnimation{ - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.horizontalCenterOffset" - from: -10.5 - to: 0 - duration: 300 - } - - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: -9 - to: -13 - duration: 300 - } - } - } - - SequentialAnimation { - id: onreadyanim - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: -8 - to: 0 - duration: 200 - } - - ParallelAnimation { - PropertyAnimation { - target: canvascenterhalfgraphic; - property: "mpie"; - from: 3 - to: 4 - duration: 600 - } - - PropertyAnimation { - target: canvascentersmallgraphic; - property: "mpie"; - from: 1 - to: 6 - duration: 600 - } - -// RotationAnimator { -// target: canvascenterbiggraphic; -// from: 0; -// to: 720; -// duration: 2000 -// } -// -// RotationAnimator { -// target: canvascenterbggraphic; -// from: 0; -// to: 90; -// duration: 1000 -// } - } - - ParallelAnimation{ - PropertyAnimation { - target: canvascentersmallgraphic - property: "anchors.verticalCenterOffset" - from: 0 - to: -8 - duration: 200 - } - PropertyAnimation { - target: canvascentersmallgraphic; - property: "mpie"; - from: 6 - to: 1 - duration: 200 - } - - PropertyAnimation { - target: canvascenterhalfgraphic; - property: "mpie"; - from: 4 - to: 3 - duration: 600 - } - -// RotationAnimator { -// target: canvascenterbggraphic; -// from: 90; -// to: 0; -// duration: 1000 -// } - - } - } - - - - Canvas { - id:canvascenterbggraphic - width: parent.width - height: parent.height - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - - property color strokeStyle: Qt.darker(fillStyle, 1.5) - property color fillStyle: Qt.darker("deepskyblue", 1.1) - property real lineWidth: 1.6 - property bool fill: true - property bool stroke: false - property real alpha: 1.0 - property real scale : 1 - property real rotate : 0 - antialiasing: true - smooth: true - - onLineWidthChanged:requestPaint(); - onFillChanged:requestPaint(); - onStrokeChanged:requestPaint(); - //onScaleChanged:requestPaint(); - onRotateChanged:requestPaint(); - - renderTarget: Canvas.FramebufferObject - renderStrategy: Canvas.Cooperative - - - onPaint: { - var ctxside = canvascenterbggraphic.getContext('2d'); - var hCenter = width * 0.5 - var vCenter = height * 0.5 - var numberOfSides = 6 - var size = 12 - - ctxside.save(); - ctxside.clearRect(0, 0, canvascenterbggraphic.width, canvascenterbggraphic.height); - ctxside.globalAlpha = canvascenterbggraphic.alpha; - ctxside.strokeStyle = canvascenterbggraphic.strokeStyle; - ctxside.fillStyle = canvascenterbggraphic.fillStyle; - ctxside.lineWidth = canvascenterbggraphic.lineWidth; - ctxside.scale(canvascenterbggraphic.scale, canvascenterbggraphic.scale); - ctxside.rotate(canvascenterbggraphic.rotate); - ctxside.lineJoin = "round"; - ctxside.lineCap = "round"; - - ctxside.beginPath(); - ctxside.moveTo(hCenter + size * Math.sin(0), vCenter + size * Math.cos(0)); - - for (var i = 1; i <= numberOfSides;i += 1) { - ctxside.lineTo(hCenter + size * Math.sin(i * 2 * Math.PI / numberOfSides), vCenter + size * Math.cos(i * 2 * Math.PI / numberOfSides)); - } - ctxside.closePath(); - ctxside.fill(); - ctxside.stroke(); - - if (canvascenterbggraphic.fill) - ctxside.fill(); - if (canvascenterbggraphic.stroke) - ctxside.stroke(); - ctxside.restore(); - } - } - - Canvas { - id:canvascenterbiggraphic - width: parent.width - height: parent.height - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - anchors.horizontalCenterOffset: 0; - anchors.verticalCenterOffset: 0; - transformOrigin: Item.Center - //anchors.left: canvasleftline.left - - //property real viewScale: base.parent.scale - - property color strokeStyle: "white"//Qt.darker("white", 1.4) - property color fillStyle: "lightsteelblue" // red - property real lineWidth: 1.2 - property bool fill: false - property bool stroke: false - property real alpha: 1.0 - property real scale : 1 - property real rotate : 0 - property real mpie: 5 - antialiasing: true - smooth: true - - onLineWidthChanged:requestPaint(); - onFillChanged:requestPaint(); - onStrokeChanged:requestPaint(); - onScaleChanged:requestPaint(); - onRotateChanged:requestPaint(); - onFillStyleChanged:requestPaint(); - - renderTarget: Canvas.FramebufferObject - renderStrategy: Canvas.Cooperative - - - onPaint: { - var ctxcircle = canvascenterbiggraphic.getContext('2d'); - var offleftcenter = width * 0.50 - var offrightcenter = width * 0.50 - var vCenter = height * 0.5 - var vDelta = height / 6 - - ctxcircle.save(); - ctxcircle.clearRect(0, 0, canvascenterbiggraphic.width, canvascenterbiggraphic.height); - ctxcircle.globalAlpha = canvascenterbiggraphic.alpha; - ctxcircle.strokeStyle = canvascenterbiggraphic.strokeStyle; - ctxcircle.fillStyle = canvascenterbiggraphic.fillStyle; - ctxcircle.lineWidth = canvascenterbiggraphic.lineWidth; - ctxcircle.scale(canvascenterbiggraphic.scale, canvascenterbiggraphic.scale); - ctxcircle.rotate(canvascenterbiggraphic.rotate) - - ctxcircle.beginPath(); - ctxcircle.arc(offleftcenter, vCenter, mpie, 10 * Math.PI, false); - ctxcircle.stroke(); - - if (canvascenterbiggraphic.stroke) - ctxcircle.stroke(); - ctxcircle.restore(); - - } - } - Canvas { - id:canvascenterhalfgraphic - width: parent.width - height: parent.height - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - anchors.horizontalCenterOffset: 0; - anchors.verticalCenterOffset: 0; - //anchors.left: canvasleftline.left - - //property real viewScale: base.parent.scale - - property color strokeStyle: "white"//Qt.darker("white", 1.4) - property color fillStyle: "white" // red - property real lineWidth: 1.2 - property bool fill: false - property bool stroke: false - property real alpha: 1.0 - property real scale : 1 - property real rotate : 0 - property real mpie: 3 - antialiasing: true - smooth: true - - onLineWidthChanged:requestPaint(); - onFillChanged:requestPaint(); - onStrokeChanged:requestPaint(); - onScaleChanged:requestPaint(); - onRotateChanged:requestPaint(); - onFillStyleChanged:requestPaint(); - onMpieChanged: requestPaint(); - - renderTarget: Canvas.FramebufferObject - renderStrategy: Canvas.Cooperative - - - onPaint: { - var ctxcircle = canvascenterhalfgraphic.getContext('2d'); - var offleftcenter = width * 0.50 - var offrightcenter = width * 0.50 - var vCenter = height * 0.5 - var vDelta = height / 6 - - ctxcircle.save(); - ctxcircle.clearRect(0, 0, canvascenterhalfgraphic.width, canvascenterhalfgraphic.height); - ctxcircle.globalAlpha = canvascenterhalfgraphic.alpha; - ctxcircle.strokeStyle = canvascenterhalfgraphic.strokeStyle; - ctxcircle.fillStyle = canvascenterhalfgraphic.fillStyle; - ctxcircle.lineWidth = canvascenterhalfgraphic.lineWidth; - ctxcircle.scale(canvascenterhalfgraphic.scale, canvascenterhalfgraphic.scale); - ctxcircle.rotate(canvascenterhalfgraphic.rotate); - - ctxcircle.beginPath(); - ctxcircle.arc(offleftcenter, vCenter, mpie, 2.5 * Math.PI, 3.5 * Math.PI , false); - ctxcircle.fill(); - ctxcircle.closePath(); - ctxcircle.stroke(); - - if (canvascenterhalfgraphic.stroke) - ctxcircle.stroke(); - ctxcircle.restore(); - } - } - - Canvas { - id:canvascentersmallgraphic - width: parent.width - height: parent.height - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - anchors.horizontalCenterOffset: 0; - anchors.verticalCenterOffset: -8; - //anchors.left: canvasleftline.left - - //property real viewScale: base.parent.scale - - property color strokeStyle: "white"//Qt.darker("white", 1.4) - property color fillStyle: "white" // red - property real lineWidth: 0.4 - property bool fill: false - property bool stroke: false - property real alpha: 1.0 - property real scale : 1 - property real rotate : 0 - property real mpie: 1 - antialiasing: true - - onLineWidthChanged:requestPaint(); - onFillChanged:requestPaint(); - onStrokeChanged:requestPaint(); - onScaleChanged:requestPaint(); - onRotateChanged:requestPaint(); - onFillStyleChanged:requestPaint(); - onMpieChanged: requestPaint(); - - renderTarget: Canvas.FramebufferObject - renderStrategy: Canvas.Cooperative - - - onPaint: { - var ctxcircle = canvascentersmallgraphic.getContext('2d'); - var offleftcenter = width * 0.50 - var offrightcenter = width * 0.50 - var vCenter = height * 0.5 - var vDelta = height / 6 - - ctxcircle.save(); - ctxcircle.clearRect(0, 0, canvascentersmallgraphic.width, canvascentersmallgraphic.height); - ctxcircle.globalAlpha = canvascentersmallgraphic.alpha; - ctxcircle.strokeStyle = canvascentersmallgraphic.strokeStyle; - ctxcircle.fillStyle = canvascentersmallgraphic.fillStyle; - ctxcircle.lineWidth = canvascentersmallgraphic.lineWidth; - ctxcircle.scale(canvascentersmallgraphic.scale, canvascentersmallgraphic.scale); - ctxcircle.rotate(canvascentersmallgraphic.rotate); - - ctxcircle.beginPath(); - ctxcircle.arc(offleftcenter, vCenter, mpie, 10 * Math.PI , false); - ctxcircle.fill(); - ctxcircle.closePath(); - ctxcircle.stroke(); - - if (canvascentersmallgraphic.stroke) - ctxcircle.stroke(); - ctxcircle.restore(); - } - } - } diff --git a/plasmoid/contents/ui/LoaderType.qml b/plasmoid/contents/ui/LoaderType.qml deleted file mode 100644 index 0a48b26..0000000 --- a/plasmoid/contents/ui/LoaderType.qml +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa - -Column { - spacing: 6 - anchors.right: parent.right - property string filename: "file:///" + model.InputQuery - property int getHeight - - Component.onCompleted: { - var mObj = loaderComp.createObject(loaderView, {}) - } - - Row { - id: messageRow - spacing: 6 - - Rectangle { - id: messageRect - width: cbwidth - radius: 2 - height: newikiFlick.height - color: theme.backgroundColor - - Flickable { - id: newikiFlick - width: messageRect.width - height: getHeight - - Item { - id: loaderView - anchors.fill: parent - } - - Component { - id: loaderComp - - Loader { - id: loaderScreen - anchors.left: parent.left - anchors.right: parent.right - height: Math.max(item ? item.implicitHeight : 0, units.gridUnit * 10) - source: filename - - function reload(){ - source = filename + "?t=" + Date.now() - } - - Component.onCompleted: { - loaderScreen.reload(); - getHeight = height - } - } - } - } - } - } - } diff --git a/plasmoid/contents/ui/Logic.qml b/plasmoid/contents/ui/Logic.qml index a628ef1..8e461ee 100644 --- a/plasmoid/contents/ui/Logic.qml +++ b/plasmoid/contents/ui/Logic.qml @@ -1,78 +1,78 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ -import QtQuick 2.7 +import QtQuick 2.9 Item { id: component property alias model: filterModel property QtObject sourceModel: undefined property string filter: "" property string property: "" Connections { onFilterChanged: invalidateFilter() onPropertyChanged: invalidateFilter() onSourceModelChanged: invalidateFilter() } Component.onCompleted: invalidateFilter() ListModel { id: filterModel } function invalidateFilter() { if (sourceModel === undefined) return; filterModel.clear(); if (!isFilteringPropertyOk()) return var length = sourceModel.count for (var i = 0; i < length; ++i) { var item = sourceModel.get(i); if (isAcceptedItem(item)) { filterModel.append(item) } } } function isAcceptedItem(item) { if (item[this.property] === undefined) return false if (item[this.property].match(this.filter) === null) { return false } return true } function isFilteringPropertyOk() { if(this.property === undefined || this.property === "") { return false } return true } } diff --git a/plasmoid/contents/ui/MsmView.qml b/plasmoid/contents/ui/MsmView.qml index 49fbdc5..10d5357 100644 --- a/plasmoid/contents/ui/MsmView.qml +++ b/plasmoid/contents/ui/MsmView.qml @@ -1,251 +1,112 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ import QtQuick 2.9 -import QtQuick.Layouts 1.3 +import QtQml.Models 2.2 import QtQuick.Controls 2.2 +import QtQuick.Layouts 1.3 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.components 3.0 as PlasmaComponents3 import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa -import Qt.labs.settings 1.0 +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft -Rectangle { - id: skillcontent +Kirigami.AbstractCard { + id: skillInstallerDelegate + + contentItem: Item { + implicitWidth: delegateLayout.implicitWidth; + implicitHeight: delegateLayout.implicitHeight; + + ColumnLayout{ + id: delegateLayout + anchors { + left: parent.left; + top: parent.top; + right: parent.right; + } + + Kirigami.Heading { + id: skillName Layout.fillWidth: true; - anchors { - left: parent.left; - leftMargin: 0.5; - right: parent.right - } - height: units.gridUnit * 4 - border.width: 1 - border.color: Qt.darker(theme.linkColor, 1.2) - color: Qt.darker(theme.backgroundColor, 1.2) - property var configPath - - function exec(msmparam) { - if(main.coreinstallstartpath == packagemcorestartcmd){ - if(innerset.versionIndex == 0){ - var createSkillMsg = "install " + model.name - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [createSkillMsg]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - else { - return launchinstaller.msmapp("bash msm install " + model.url) - } - } - else { - if(innerset.versionIndex == 0){ - var createSkillMsg = "install " + model.name - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [createSkillMsg]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - else { - var bscrpt = "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/msm.sh" - return launchinstaller.msmapp("bash " + bscrpt + " install " + model.url) - } - } - } - - function execUninstall(msmparam) { - if(main.coreinstallstartpath == packagemcorestartcmd){ - if(innerset.versionIndex == 0){ - var createSkillMsg = "uninstall " + model.name - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [createSkillMsg]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - else { - return launchinstaller.msmapp("bash msm remove " + model.name) - } - } - else { - if(innerset.versionIndex == 0){ - var createSkillMsg = "uninstall " + model.name - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [createSkillMsg]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - else { - var bscrpt = "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/msm.sh" - return launchinstaller.msmapp("bash " + bscrpt + " remove " + model.name) - } - } - } - - function execUpdate(msmparam) { - if(main.coreinstallstartpath == packagemcorestartcmd){ - return launchinstaller.msmapp("bash msm update " + model.name) - } - else { - var bscrpt = "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/msm.sh" - return launchinstaller.msmapp("bash " + bscrpt + " update " + model.name) - } - } - - function execConfiguration(msmparam) { - var openConfigUrl = Qt.resolvedUrl(configPath) - Qt.openUrlExternally(openConfigUrl) - } - - function getSkillInfoLocal() { - var customFold = launchinstaller.skillsPath() - var defaultFold = '/opt/mycroft/skills' - var skillPath = (defaultFold || customFold) + "/" + model.name - configPath = (defaultFold || customFold) + "/" + model.name + "/" + "settingsmeta.json" - if(PlasmaLa.FileReader.file_exists_local(skillPath)){ - installUpdateLabl.text = i18n("Uninstall") - updateskillviamsm.enabled = true - } - if(PlasmaLa.FileReader.file_exists_local(configPath)){ - configureSkillLabl.enabled = true - } - } - - PlasmaLa.MsmApp{ - id: launchinstaller - } - - Component.onCompleted: { - getSkillInfoLocal(); + wrapMode: Text.WordWrap; + font.bold: true; + text: qsTr(model.name); + level: 3; + color: Kirigami.Theme.textColor; + } + + RowLayout { + id: skillInfoRow + spacing: Kirigami.Units.largeSpacing + Layout.fillWidth: true + + PlasmaCore.IconItem { + id: innerskImg + source: "download"; + Layout.preferredWidth: innerskImg.width + Layout.preferredHeight: innerskImg.height + width: Kirigami.Units.gridUnit * 2 + height: Kirigami.Units.gridUnit * 2 } - PlasmaComponents.Label { - id: skllname - font.capitalization: Font.AllUppercase - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.5 - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.5 - wrapMode: Text.WordWrap - text: model.name - Rectangle { - id: sepratrmsm - width: parent.width - height: 1 - anchors.left: parent.left - anchors.bottom: parent.bottom - anchors.bottomMargin: 2 - color: Qt.darker(theme.linkColor, 1.2) - } - } + Label { + id: skillURL + wrapMode: Text.WordWrap + color: theme.textColor + text: "View Repository" + Layout.fillWidth: true; - PlasmaComponents.Label { - id: urlskllable - anchors.top: skllname.bottom - anchors.topMargin: units.gridUnit * 0.03 - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.5 - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.5 - wrapMode: Text.WordWrap - color: theme.textColor - text: model.url - - MouseArea{ - id: gotoGit - anchors.fill: parent - hoverEnabled: true - onClicked: {Qt.openUrlExternally(model.url)} - onEntered: { - urlskllable.color = Qt.darker(theme.linkColor, 1.2) - } - onExited: { - urlskllable.color = theme.textColor + MouseArea{ + id: gotoGit + anchors.fill: parent + hoverEnabled: true + onClicked: {Qt.openUrlExternally(model.url)} + onEntered: { + skillURL.color = Qt.darker(theme.linkColor, 1.2) } - } - } - Rectangle { - id: getskillviamsmRect - width: parent.width - height: units.gridUnit * 2.5 - anchors.bottom: parent.bottom - color: Qt.darker(theme.linkColor, 1.2) - - PlasmaComponents.Button{ - id: installUpdateLabl - width: parent.width / 4 - height: parent.height - anchors.left: parent.left - text: i18n("Install") - - onClicked:{ - switch(installUpdateLabl.text){ - case "Install": - var msmprogress = exec() - break - case "Uninstall": - var msmprogress = execUninstall() - break - } - } - } - - PlasmaComponents.Button{ - id: updateskillviamsm - width: parent.width / 4 - height: parent.height - anchors.left: installUpdateLabl.right - text: i18n("Update") - enabled: false - - onClicked:{ - execUpdate() - } - } - - PlasmaComponents.Button{ - id: viewGit - width: parent.width / 4 - height: parent.height - anchors.left: updateskillviamsm.right - text: i18n("Readme") - - onClicked: { - Qt.openUrlExternally(model.url) + onExited: { + skillURL.color = theme.textColor } } - - PlasmaComponents.Button{ - id: configureSkillLabl - width: parent.width / 4 - anchors.right: parent.right - height: parent.height - text: i18n("Configure") - enabled: false - - onClicked: { - execConfiguration() - } + } + } + + PlasmaComponents.Button{ + id: actionItem + text: "Install" + Layout.fillWidth: true + onClicked:{ + switch(actionItem.text){ + case "Install": + Mycroft.MycroftController.sendText("install" + skillName) + break + case "Uninstall": + var msmprogress = execUninstall() + break } } } + } + } +} + diff --git a/plasmoid/contents/ui/NavigationDelegate.qml b/plasmoid/contents/ui/NavigationDelegate.qml deleted file mode 100644 index e9eab5c..0000000 --- a/plasmoid/contents/ui/NavigationDelegate.qml +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import Qt.WebSockets 1.0 -import Qt.labs.settings 1.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import QtWebKit 3.0 -import QtWebKit.experimental 1.0 -import QtGraphicalEffects 1.0 - -Rectangle { - id: navMapDelegateItm - height: units.gridUnit * 5 - width: parent.width - color: theme.backgroundColor - - function filterDirection(getInfo){ - var keyleft = ["left","east"] - var keyright = ["right", "west"] - var keynorth = ["north", "Head"] - var keyuturn = ["U-Turn", "u-turn"] - var keyramp = ["ramp", "Ramp"] - var keyarrive = ["Arrive", "arrive"] - for (var i=0; i - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Rectangle { - id: nearbyDelegateItm - height: units.gridUnit * 6 - anchors.left: parent.left - anchors.right: parent.right - width: cbwidth - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - function getRouteInformation(llat, llong, dlat, dlong, oappid, oappcode){ - var routedoc = new XMLHttpRequest() - var url = "https://route.cit.api.here.com/routing/7.2/calculateroute.json?waypoint0=" + llat + "," + llong + "&waypoint1=" + dlat + "," + dlong + "&mode=fastest;car;&app_id=" + oappid + "&app_code=" + oappcode + "&depature=now" - routedoc.open("GET", url, true); - routedoc.send() - - routedoc.onreadystatechange = function() { - if (routedoc.readyState === XMLHttpRequest.DONE && routedoc.responseText !== "undefined") { - var reqroute = routedoc.responseText - if (reqroute !== "undefined") { - var filterRouteDict = JSON.parse(reqroute) - for (var i = 0; imtrs", placedistance) - } - } - - Rectangle { - id: placesCrdSeptHeader - height: 1 - anchors { - left: parent.left - right: parent.right - top: skillTopRowLayout.bottom - topMargin: units.gridUnit * 0.2 - } - color: theme.linkColor - } - - Item { - id: plcinner - anchors.top: placesCrdSeptHeader.bottom - anchors.topMargin: units.gridUnit * 0.15 - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - - Item { - id: plcinnerdetails - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - height: navbbtn.height - - Image { - id: placeIconType - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.05 - anchors.verticalCenter: parent.verticalCenter - source: placeicon.replace(/["']/g, "") - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - - PlasmaComponents.Label { - id: placeAddressLabel - anchors.left: placeIconType.right - anchors.leftMargin: units.gridUnit * 0.05 - wrapMode: Text.WordWrap; - font.bold: true; - font.pointSize: theme.defaultFont.pointSize - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - text: i18n("Address: %1", placeloc.replace(/["']/g, "")) - } - - Image { - id: navbbtn - anchors.right: parent.right - anchors.margins: units.gridUnit * 0.5 - source: "../images/up.png" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - - MouseArea { - anchors.fill: parent - - onClicked: { - var navpos = placeposition.replace(/[[\]]/g,'').split(","); - getRouteInformation(placelocallat, placelocallong, navpos[0], navpos[1], placeappid, placeappcode) - var formatedurl = "https://image.maps.cit.api.here.com/mia/1.6/mapview?c=" + placelocallat + "," + placelocallong + "&z=16&poi=" + navpos[0] + "," + navpos[1] + "&poithm=0&app_id=" + placeappid + "&app_code=" + placeappcode + "&h=" + cbheight / 2 + "&w=" + cbwidth + "&ppi=500ppi=120&t=7&f=2&i=true" - navMapDrawer.open() - navMapDrawer.getURL = formatedurl - } - } - } - } - - Rectangle { - id: placesCrdSeptFooter - height: apiCreds.height - anchors { - left: parent.left - right: parent.right - bottom: parent.bottom - } - color: theme.linkColor - - PlasmaComponents.Label { - id: tagsplccs - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.15 - anchors.right: apiCreds.left - anchors.verticalCenter: parent.verticalCenter - wrapMode: Text.WordWrap; - font.pointSize: theme.defaultFont.pointSize - 2 - text: placetags - } - - PlasmaComponents.Label { - id: apiCreds - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.15 - anchors.verticalCenter: parent.verticalCenter - wrapMode: Text.WordWrap; - font.bold: true - font.pointSize: theme.defaultFont.pointSize - 2 - text: i18n("Powered By: Here.API") - } - } - } - } - } - diff --git a/plasmoid/contents/ui/PlacesType.qml b/plasmoid/contents/ui/PlacesType.qml deleted file mode 100644 index bba9d1b..0000000 --- a/plasmoid/contents/ui/PlacesType.qml +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtWebKit 3.0 -import QtWebKit.experimental 1.0 - -Rectangle { - id: partclc - height: cbheight - width: cbwidth - color: theme.backgroundColor - property alias routeLmodel: routeListModel - - Component.onCompleted: { - console.log(cbheight) - } - -ListModel { - id: routeListModel -} - -ListView { - id: placesmodelview - anchors.fill: parent - model: plcLmodel - spacing: 4 - focus: false - interactive: true - clip: true; - delegate: PlacesDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } - -Drawer { - id: navMapDrawer - width: parent.width - height: cbdrawercontentheight - edge: Qt.RightEdge - dragMargin: 0 - property alias getURL: navMapView.url - - Rectangle { - id: navParentRect - width: parent.width - height: parent.height - color: Qt.lighter(theme.backgroundColor, 1.2) - - WebView { - id: navMapView - width: parent.width - height: parent.height / 2 - experimental.useDefaultContentItemSize: true - experimental.userStyleSheets: "../code/maps.css" - experimental.page.height: navMapView.height - experimental.page.width: parent.width - } - - ListView { - id: navMapDirections - anchors.top: navMapView.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - model: routeLmodel - spacing: 2 - focus: false - interactive: true - clip: true; - delegate: NavigationDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } - } - } -} - diff --git a/plasmoid/contents/ui/PulleyItem.qml b/plasmoid/contents/ui/PulleyItem.qml deleted file mode 100644 index c0541c9..0000000 --- a/plasmoid/contents/ui/PulleyItem.qml +++ /dev/null @@ -1,185 +0,0 @@ -import QtQuick 2.9 -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 -import QtGraphicalEffects 1.0 - -Item { - id: pulleyFrame - anchors.fill: parent - anchors.topMargin: units.gridUnit * 0.05 - anchors.bottomMargin: units.gridUnit * 0.02 - property bool opened: state === "PulleyExpanded" - property bool closed: state === "PulleyClosed" - property bool _isVisible - property var barColor - signal pulleyExpanded() - signal pulleyClosed() - - function open() { - pulleyFrame.state = "PulleyExpanded"; - pulleyExpanded(); - } - - function close() { - pulleyFrame.state = "PulleyClosed"; - pulleyListView.positionViewAtBeginning() - pulleyClosed(); - } - - states: [ - State { - name: "PulleyExpanded" - PropertyChanges { target: pulleyMenu; height: pulleyFrame.height - pulleyIconBar.height; } - PropertyChanges { target: pulleyListView; interactive: true; } - PropertyChanges { target: menudrawIcon; source: "go-down";} - }, - State { - name: "PulleyClosed" - PropertyChanges { target: pulleyMenu; height: 0; } - PropertyChanges { target: pulleyListView; interactive: false; } - PropertyChanges { target: menudrawIcon; source: "go-up";} - } - ] - - - transitions: [ - Transition { - to: "*" - NumberAnimation { target: pulleyMenu; properties: "height"; duration: 450; easing.type: Easing.OutCubic; } - } - ] - - Rectangle { - id: pulleyIconBar - anchors.bottom: pulleyMenu.top - anchors.bottomMargin: 4 - height: units.gridUnit * 0.40 - color: barColor - width: cbwidth - PlasmaCore.IconItem { - id: menudrawIcon - visible: _isVisible - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - } - - MouseArea{ - anchors.fill: parent - propagateComposedEvents: true - onClicked: { - if (pulleyFrame.opened) { - pulleyFrame.close(); - } else { - pulleyFrame.open(); - } - } - } - } - - Rectangle { - id: pulleyMenu - width: parent.width - color: PlasmaCore.ColorScope.backgroundColor - anchors.bottom: parent.bottom - height: 0 - - ListView { - id: pulleyListView - width: parent.width - anchors.top: parent.top - anchors.bottom: pulleyEndArea.bottom - model: SkillModel{} - clip: true - interactive: false; - spacing: 5 - delegate: - Rectangle { - id: pulleyDelegateListBg - height: units.gridUnit * 2.5 - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - radius: 4 - anchors.left: parent.left - anchors.right: parent.right - anchors.leftMargin: units.gridUnit * 0.50 - anchors.rightMargin: units.gridUnit * 0.50 - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - MouseArea { - anchors.fill: parent - hoverEnabled: true - propagateComposedEvents: true - - onEntered: { - removeItemButton.visible = true - pulleyDelegateListBg.color = theme.linkColor - } - onExited: { - removeItemButton.visible = false - pulleyDelegateListBg.color = Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - } - onClicked: { - pulleyFrame.close(); - var genExampleQuery = CommandList.get(0).Commands; - var exampleQuery = genExampleQuery.toString().split(","); - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [exampleQuery[1].toLowerCase()]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - qinput.text = ""; - } - } - - PlasmaCore.IconItem { - id: removeItemButton - source: "window-close" - width: units.gridUnit * 1.5 - height: units.gridUnit * 1.5 - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.50 - visible: false - - MouseArea { - anchors.fill: parent - hoverEnabled: true - propagateComposedEvents: true - onEntered: { - removeItemButton.visible = true - } - onClicked: { - SkillModel.remove(index) - } - } - } - - PlasmaComponents.Label { - id: pulleyDelegateListLabel - anchors.centerIn: parent - text: CommandList.get(0).Commands - color: PlasmaCore.ColorScope.textColor - - } - } - } - - Item { - id: pulleyEndArea - anchors.bottom: parent.bottom - anchors.bottomMargin: units.gridUnit * 1.22 - width: parent.width - height: units.gridUnit * 2.5 - } - } - } diff --git a/plasmoid/contents/ui/PulleyItemDash.qml b/plasmoid/contents/ui/PulleyItemDash.qml deleted file mode 100644 index d87a139..0000000 --- a/plasmoid/contents/ui/PulleyItemDash.qml +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -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 -import QtGraphicalEffects 1.0 - -Item { - id: pulleyFrame - anchors.fill: parent - property bool opened: state === "PulleyExpanded" - property bool closed: state === "PulleyClosed" - property bool _isVisible - property var barColor - signal pulleyExpanded() - signal pulleyClosed() - - function open() { - pulleyFrame.state = "PulleyExpanded"; - pulleyExpanded(); - } - - function close() { - pulleyFrame.state = "PulleyClosed"; - pulleyClosed(); - } - - states: [ - State { - name: "PulleyExpanded" - PropertyChanges { target: pulleyMenu; height: cbheight / 6 - pulleyIconBar.height; } - PropertyChanges { target: pulleydashMenu; visible: true; } - PropertyChanges { target: menudrawIcon; source: "go-down";} - }, - State { - name: "PulleyClosed" - PropertyChanges { target: pulleyMenu; height: 0; } - PropertyChanges { target: pulleydashMenu; visible: false; } - PropertyChanges { target: menudrawIcon; source: "go-up";} - } - ] - - - transitions: [ - Transition { - to: "*" - NumberAnimation { target: pulleyMenu; properties: "height"; duration: 450; easing.type: Easing.OutCubic; } - } - ] - - Rectangle { - id: pulleyIconBar - anchors.bottom: pulleyMenu.top - anchors.bottomMargin: 0 - height: units.gridUnit * 0.40 - color: barColor - width: cbwidth - PlasmaCore.IconItem { - id: menudrawIcon - visible: _isVisible - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - } - - MouseArea{ - anchors.fill: parent - propagateComposedEvents: true - onClicked: { - if (pulleyFrame.opened) { - pulleyFrame.close(); - } else { - pulleyFrame.open(); - } - } - } - } - - Rectangle { - id: pulleyMenu - width: parent.width - color: PlasmaCore.ColorScope.backgroundColor - anchors.bottom: parent.bottom - height: 0 - - Item { - id: pulleydashMenu - anchors.fill: parent - visible: false - - PlasmaComponents.Button { - id: refreshDashBtn - anchors.left: parent.left - anchors.top: parent.top - width: parent.width / 2 - height: parent.height - text: i18n("Refresh Dashboard") - - onClicked: { - convoLmodel.clear() - showDash("setVisible") - } - } - PlasmaComponents.Button { - id: settingsDashBtn - anchors.left: refreshDashBtn.right - anchors.top: parent.top - width: parent.width / 2 - height: parent.height - text: i18n("Change Settings") - - onClicked: { - tabBar.currentTab = mycroftSettingsTab - settingstabBar.currentTab = dashSettingsTab - } - } - } - - Item { - id: pulleyEndArea - anchors.bottom: parent.bottom - anchors.bottomMargin: units.gridUnit * 1.22 - width: parent.width - height: units.gridUnit * 2.5 - } - } - } diff --git a/plasmoid/contents/ui/RecipeDelegate.qml b/plasmoid/contents/ui/RecipeDelegate.qml deleted file mode 100644 index 21fe0c5..0000000 --- a/plasmoid/contents/ui/RecipeDelegate.qml +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: recipeDelegateItm - height: units.gridUnit * 6 - color: Qt.darker(theme.backgroundColor, 1.2) - anchors.left: parent.left - anchors.right: parent.right - width: cbwidth - property alias viewbtnClickItem: recipeViewBtn - - Column { - id: contentdlgtitem - anchors.fill: parent - - Text { - id: recipename - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap; - font.bold: true; - text: recipeLabel.replace(/["']/g, "") - color: theme.textColor - } - - Rectangle { - anchors.left: parent.left - anchors.right: parent.right - color: theme.linkColor - height: units.gridUnit * 0.1 - } - - Item { - id: recipeinner - height: units.gridUnit * 4 - width: cbwidth - - Image { - id: recipeImgType - source: recipeImageUrl - anchors.left: parent.left - width: units.gridUnit * 4 - height: units.gridUnit * 4 - } - - Item { - id: recipeInnerInfoColumn - height: parent.height - anchors.left: recipeImgType.right - - Text{ - id: recipeCalorieCount - width: parent.width; - color: theme.textColor ; - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - height: units.gridUnit * 1 - text: i18n("Calories: %1 cal", recipeCalories) - } - - Text{ - id: recipeDietLabel - width: parent.width; - color: theme.textColor ; - anchors.top: recipeCalorieCount.bottom - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - height: units.gridUnit * 1 - text: i18n("Diet Type: %1", recipeDiet) - } - - Text{ - id: recipeHealthTagsLabel - width: parent.width; - color: theme.textColor ; - anchors.top: recipeDietLabel.bottom - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - height: units.gridUnit * 1 - text: i18n("Health Tags: %1", recipeHealthTags) - } - } - - PlasmaComponents.Button { - id: recipeViewBtn - anchors.right: parent.right - width: units.gridUnit * 6; - height: units.gridUnit * 4; - text: i18n("View Recipe") - - onClicked: { - recipeReadLmodel.clear() - recipeReadDrawer.open() - recipeReadDrawer.recipeReadDrawerHeader = "" + recipeLabel.replace(/["']/g, "") + "" - var readRecipeLines = recipeIngredientLines.split(",") - for(var i = 0; i < readRecipeLines.length; i++){ - recipeReadLmodel.append({ingredients: readRecipeLines[i]}) - } - } - } - } - - Rectangle { - id: recipeFooterSrc - anchors.left: parent.left - anchors.right: parent.right - color: theme.linkColor - height: units.gridUnit * 1 - - Text { - color: theme.textColor; - font.pixelSize: 10 - text: i18n("Recipe Source: %1", recipeSource) - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - - Text { - color: theme.textColor ; - font.pixelSize: 10 - text: i18n("Powered By: Edamam.com") - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - } - } - } diff --git a/plasmoid/contents/ui/RecipeReadDelegate.qml b/plasmoid/contents/ui/RecipeReadDelegate.qml deleted file mode 100644 index a5db660..0000000 --- a/plasmoid/contents/ui/RecipeReadDelegate.qml +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: recipeListDelegateItm - height: units.gridUnit * 1 - color: Qt.darker(theme.backgroundColor, 1.2) - anchors.left: parent.left - anchors.right: parent.right - - Row { - id: recipeListColumn - spacing: 4 - - Item { - anchors.top: parent.top - anchors.bottom: parent.bottom - width: units.gridUnit * 2 - - PlasmaCore.IconItem { - id: recipeReadDrwHeaderSpeakIcon - source: "kr_jumpback" - width: units.gridUnit * 0.75 - height: units.gridUnit * 0.75 - anchors.centerIn: parent - } - } - - Rectangle { - width: 1 - height: parent.height - color: theme.linkColor - } - - Label { - id: recipeListDelegateItmLabel - color: theme.textColor - text: ingredients - anchors.verticalCenter: parent.verticalCenter - } - } -} diff --git a/plasmoid/contents/ui/RecipeType.qml b/plasmoid/contents/ui/RecipeType.qml deleted file mode 100644 index b5bcc84..0000000 --- a/plasmoid/contents/ui/RecipeType.qml +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: partclc - height: cbheight - width: cbwidth - color: theme.backgroundColor - property alias recipeReadLVModel: recipeReadListView.model - - Connections { - target: main2 - ignoreUnknownSignals: true - - onRecipeMethod: { - var getRecipeTitle = msgRecipeMethod - for (var i = 0; i < recipeLmodel.count; i++) { - var recipemodelLables = recipeLmodel.get(i).recipeLabel.toLowerCase(); - recipemodelLables.replace(/\W/g, ''); - if (recipemodelLables == getRecipeTitle) { - recipesmodelview.contentItem.children[i].viewbtnClickItem.clicked() - } - } - } - } - -ListView { - id: recipesmodelview - anchors.fill: parent - model: recipeLmodel - spacing: 4 - focus: false - interactive: true - clip: true; - delegate: RecipeDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } - -Drawer { - id: recipeReadDrawer - width: parent.width - height: cbdrawercontentheight - edge: Qt.RightEdge - dragMargin: 0 - property alias recipeReadDrawerHeader: recipeReadDrwHeaderLabel.text - - Rectangle { - id: recipeReadParentRect - width: parent.width - height: parent.height - color: theme.backgroundColor - - Rectangle { - id: recipeReadDrwHeaderSrc - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - color: theme.linkColor - height: units.gridUnit * 2 - - Text { - id: recipeReadDrwHeaderLabel - color: theme.textColor; - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - - PlasmaCore.IconItem { - id: recipeReadDrwHeaderSpeakIcon - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - source: "minuet-scales" - width: units.gridUnit * 1.25 - height: units.gridUnit * 1.25 - } - } - - ListView { - id: recipeReadListView - anchors.top: recipeReadDrwHeaderSrc.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: recipeReadDrwFooterSrc.top - model: recipeReadLmodel - spacing: 3 - focus: false - interactive: true - clip: true; - delegate: RecipeReadDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } - - Rectangle { - id: recipeReadDrwFooterSrc - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - color: theme.linkColor - height: units.gridUnit * 1 - - PlasmaCore.IconItem { - id: recipeReadDrwFooterCloseIcon - anchors.right: recipeReadDrwCloseLbl.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - source: "window-close" - width: units.gridUnit * 1 - height: units.gridUnit * 1 - } - - Text { - id: recipeReadDrwCloseLbl - color: theme.textColor; - text: i18n("Close Ingredients List") - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - } - - MouseArea{ - anchors.fill: parent - onClicked: { - recipeReadDrawer.close() - } - } - } - } - } -} - diff --git a/plasmoid/contents/ui/RemoteStt.qml b/plasmoid/contents/ui/RemoteStt.qml new file mode 100644 index 0000000..ed1a08c --- /dev/null +++ b/plasmoid/contents/ui/RemoteStt.qml @@ -0,0 +1,154 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.2 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + +Item { + id: root + anchors.fill: parent + property alias record: audrectimer.running + + Mycroft.AudioRec { + id: audioRec + } + + Timer { + id: audrectimer + interval: 10000 + running: false + onRunningChanged: { + if(running){ + audioRec.recordTStart() + numAnim.start() + } else { + audioRec.recordTStop() + } + } + } + + function sendAudioClip() { + audioRec.returnStream() + } + + Connections { + target: audioRec + onRecordTStatus: { + console.log(recStatus) + switch(recStatus){ + case "Completed": + console.log("In Completed") + audioRec.readStream() + sendAudioClip() + audioRecorder.close() + break; + case "Error": + console.log("inError") + break; + } + } + } + + ColumnLayout { + id: closebar + anchors.fill: parent + spacing: 0 + + Kirigami.Heading { + id: lbl1 + text: "Listening" + level: 2 + font.bold: true + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter + } + + Kirigami.Separator { + Layout.fillWidth: true + Layout.preferredHeight: 1 + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + ProgressBar { + id: bar + to: 100 + from: 0 + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: Kirigami.Units.largeSpacing + anchors.rightMargin: Kirigami.Units.largeSpacing + anchors.verticalCenter: parent.verticalCenter + + contentItem: Item { + implicitWidth: parent.width + implicitHeight: parent.height + + Rectangle { + width: bar.visualPosition * parent.width + height: parent.height + radius: 2 + gradient: Gradient { + GradientStop { position: 0.0; color: Kirigami.Theme.linkColor } + GradientStop { position: 0.3; color: Qt.lighter(Kirigami.Theme.linkColor, 1.5)} + GradientStop { position: 0.6; color: Qt.lighter(Kirigami.Theme.linkColor, 1.5)} + GradientStop { position: 1.0; color: Kirigami.Theme.linkColor } + } + } + } + + NumberAnimation { + id: numAnim + target: bar + property: "value" + from: 0 + to: 100 + duration: 10000 + } + } + } + + Kirigami.Separator { + Layout.fillWidth: true + Layout.preferredHeight: 1 + } + + Rectangle { + color: Kirigami.Theme.hoverColor + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 1.5 + + Kirigami.Heading { + level: 2 + text: "Close" + anchors.centerIn: parent + anchors.margins: Kirigami.Units.largeSpacing + } + + MouseArea { + anchors.fill: parent + onClicked: audioRecorder.close() + } + } + } +} + diff --git a/plasmoid/contents/ui/SimpleMessageType.qml b/plasmoid/contents/ui/SimpleMessageType.qml deleted file mode 100644 index 36cd2e5..0000000 --- a/plasmoid/contents/ui/SimpleMessageType.qml +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.plasma.core 2.0 as PlasmaCore -import QtGraphicalEffects 1.0 - -Item { - width: cbwidth - height: messageRect.height + timeStampLabel.height - property alias mssg: messageText.text - - Row { - id: messageRow - spacing: 6 - - Item { - id: repImgBox - width: units.gridUnit * 2 - height: units.gridUnit * 2 - - Image { - id: repImg - anchors.fill: parent - source: "../images/mycroftsmaller2.png" - } - - ColorOverlay { - anchors.fill: repImg - source: repImg - color: theme.linkColor - } - } - - Column{ - spacing: 1 - - Item { - id: simplemsgRectFrameItem - width: cbwidth - height: messageRect.height - - Rectangle { - id: messageRect - anchors.left: simpleMsgRectedge.right - anchors.leftMargin: -2 - width: cbwidth - units.gridUnit * 2 - radius: 2 - height: messageText.implicitHeight + 24 - color: Qt.lighter(theme.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - - MouseArea { - anchors.fill: parent - hoverEnabled: true - propagateComposedEvents: true - onEntered: { - messageRect.color = Qt.lighter(theme.backgroundColor, 1.5) - simpleMsgRectedgeOverLay.color = Qt.lighter(theme.backgroundColor, 1.5) - } - onExited: { - messageRect.color = Qt.lighter(theme.backgroundColor, 1.2) - simpleMsgRectedgeOverLay.color = Qt.lighter(theme.backgroundColor, 1.2) - } - onClicked:{ - simpleCtxMenu.open() - } - } - - PlasmaComponents.Label { - id: messageText - text: model.InputQuery - anchors.fill: parent - anchors.margins: 12 - wrapMode: Label.Wrap - } - } - - Image { - id: simpleMsgRectedge - anchors.left: parent.left - anchors.top: parent.top - source: "../images/arleft.png" - width: units.gridUnit * 0.50 - height: units.gridUnit * 1.25 - } - - ColorOverlay { - id: simpleMsgRectedgeOverLay - anchors.fill: simpleMsgRectedge - source: simpleMsgRectedge - color: Qt.lighter(theme.backgroundColor, 1.2) - } - } - - Text { - id: timeStampLabel - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.50 - width: units.gridUnit * 2.5 - height: units.gridUnit * 0.50 - color: Qt.darker(theme.textColor, 1.5) - font.pointSize: theme.defaultFont.pointSize - 2 - font.letterSpacing: theme.defaultFont.letterSpacing - font.wordSpacing: theme.defaultFont.wordSpacing - font.family: theme.defaultFont.family - renderType: Text.NativeRendering - text: currentDate.toLocaleTimeString(Qt.locale(), Locale.ShortFormat); - } - } - } - SimpleMessageTypeMenu{ - id: simpleCtxMenu - } - } diff --git a/plasmoid/contents/ui/SimpleMessageTypeMenu.qml b/plasmoid/contents/ui/SimpleMessageTypeMenu.qml deleted file mode 100644 index 52df9d4..0000000 --- a/plasmoid/contents/ui/SimpleMessageTypeMenu.qml +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.plasma.core 2.0 as PlasmaCore -import QtGraphicalEffects 1.0 - -Drawer { - id: askTypeMenuItem - width: dwrpaddedwidth - height: removeRectbtn.height + searchRectbtn.height - edge: Qt.TopEdge - dragMargin: 0 - - Rectangle { - id: askMenuRectItem - anchors.fill: parent - color: theme.backgroundColor - - Column { - id: menuRectColumn - anchors.fill: parent - - Rectangle { - id: removeRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: removeRectIcon - anchors.verticalCenter: parent.verticalCenter - source: "window-close" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: removeRectSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: removeRectLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Remove") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - removeRectLabel.color = theme.linkColor - } - onExited:{ - removeRectLabel.color = theme.textColor - } - onClicked:{ - convoLmodel.remove(index) - } - } - } - - Rectangle { - id: btnshorzSepr1 - width: parent.width - height: 1 - color: theme.linkColor - } - - Rectangle { - id: searchRectbtn - width: parent.width - height: units.gridUnit * 2 - color: theme.backgroundColor - - Row { - spacing: 5 - PlasmaCore.IconItem { - id: searchRectIcon - anchors.verticalCenter: parent.verticalCenter - source: "system-search" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - Rectangle { - id: searchRectSeperater - width: 1 - height: parent.height - color: theme.linkColor - } - PlasmaComponents.Label { - id: searchRectLabel - anchors.verticalCenter: parent.verticalCenter - text: i18n("Search Online") - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: { - searchRectLabel.color = theme.linkColor - } - onExited:{ - searchRectLabel.color = theme.textColor - } - onClicked:{ - Qt.openUrlExternally("https://duckduckgo.com/?q=" + model.InputQuery) - } - } - } - - Rectangle { - id: btnshorzSeprEnd - width: parent.width - height: units.gridUnit * 0.75 - color: theme.linkColor - - PlasmaCore.IconItem { - id: closemenuDrawer - anchors.centerIn: parent - source: "go-up" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - } - } - } - } diff --git a/plasmoid/contents/ui/SkillView.qml b/plasmoid/contents/ui/SkillView.qml deleted file mode 100644 index 0a03f0d..0000000 --- a/plasmoid/contents/ui/SkillView.qml +++ /dev/null @@ -1,181 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.2 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa - - -Rectangle { - id: tipscontent - Layout.fillWidth: true; - anchors { - left: parent.left; - leftMargin: 0.5; - right: parent.right - - } - height: units.gridUnit * 5 - border.width: 1 - border.color: Qt.darker(theme.linkColor, 1.2) - color: Qt.darker(theme.backgroundColor, 1.2) - - Image { - id: innerskImg - source: Pic - width: units.gridUnit * 1.2 - height: units.gridUnit * 1.2 - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - - PlasmaCore.SvgItem { - anchors { - left: innerskImg.right - leftMargin: 4 - top: parent.top - topMargin: 0 - bottom: parent.bottom - bottomMargin: 0 - } - - width: lineskillpgSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: lineskillpgSvg; - imagePath: "widgets/line" - } - } - - Item { - id: skilltipsinner - anchors.left: innerskImg.right - anchors.leftMargin: 10 - anchors.right: parent.right - //color: theme.backgroundColor - anchors.top: tipscontent.top - anchors.bottom: parent.bottom - - PlasmaComponents.Label { - id: innerskllname - anchors.top: parent.top - anchors.topMargin: 2 - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap; - font.bold: true; - text: Skill - } - - Rectangle { - id: sepratrln1 - height: 1 - anchors.top: innerskllname.bottom - anchors.topMargin: 2 - anchors.bottomMargin: 2 - anchors.left: parent.left - anchors.right: parent.right - color: Qt.darker(theme.linkColor, 1.2) - } - - Column{ - id: innerskillscolumn - anchors.top: sepratrln1.bottom - - PlasmaComponents.Label { - id: cmd0label - wrapMode: Text.WordWrap; - width: main.width; - text: i18n("Command: %1", CommandList.get(0).Commands) - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onEntered: { - cmd0label.color = theme.linkColor - cmd0label.font.underline = true - cmd0label.font.bold = true - } - onExited: { - cmd0label.color = theme.textColor - cmd0label.font.underline = false - cmd0label.font.bold = false - } - onClicked: { - var genExampleQuery = CommandList.get(0).Commands - var exampleQuery = genExampleQuery.toString().split(",") - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [exampleQuery[1].toLowerCase()]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - tabBar.currentTab = mycroftTab - qinput.text = ""; - } - } - } - - PlasmaComponents.Label { - id: cmd1label - wrapMode: Text.WordWrap; - width: main.width; - text: i18n("Command: %1", CommandList.get(1).Commands) - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onEntered: { - cmd1label.color = theme.linkColor - cmd1label.font.underline = true - cmd1label.font.bold = true - } - onExited: { - cmd1label.color = theme.textColor - cmd1label.font.underline = false - cmd1label.font.bold = false - } - onClicked: { - tabBar.currentTab = mycroftTab - var genExampleQuery = CommandList.get(1).Commands - var exampleQuery = genExampleQuery.toString().split(",") - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [exampleQuery[1].toLowerCase()]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - tabBar.currentTab = mycroftTab - qinput.text = ""; - } - } - } - } - } - } - - diff --git a/plasmoid/contents/ui/SkillsInstallerComponent.qml b/plasmoid/contents/ui/SkillsInstallerComponent.qml new file mode 100644 index 0000000..28c18d5 --- /dev/null +++ b/plasmoid/contents/ui/SkillsInstallerComponent.qml @@ -0,0 +1,164 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 +import QtQuick.Layouts 1.3 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.components 3.0 as PlasmaComponents3 +import org.kde.plasma.extras 2.0 as PlasmaExtras +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + +Rectangle { + id: skillsInstallerComponent + Layout.fillWidth: true + Layout.fillHeight: true + color: Kirigami.Theme.backgroundColor + property var skillList: [] + + function refreshAllSkills(){ + getSkills(); + msmskillsModel.reload(); + } + + function getAllSkills(){ + if(skillList.length <= 0){ + getSkills(); + } + return skillList; + } + function getSkillByName(skillName){ + var tempSN=[]; + for(var i = 0; i 0 ) { + msmskillsModel.applyFilter(text.toLowerCase()); + } else { + msmskillsModel.reload(); + } + } + } + + PlasmaComponents.ToolButton { + id: getskillsbx + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + iconSource: "view-refresh" + tooltip: i18n("Refresh List") + flat: true + width: Math.round(units.gridUnit * 2) + height: width + z: 102 + + onClicked: { + msmskillsModel.clear(); + refreshAllSkills(); + } + } + } + + ListModel { + id: msmskillsModel + + Component.onCompleted: { + reload(); + } + + function reload() { + var skList = getAllSkills(); + msmskillsModel.clear(); + for( var i=0; i < skList.length ; ++i ) { + msmskillsModel.append(skList[i]); + } + } + + function applyFilter(skName) { + var skList = getSkillByName(skName); + msmskillsModel.clear(); + for( var i=0; i < skList.length ; ++i ) { + msmskillsModel.append(skList[i]); + } + } + } + + Kirigami.CardsListView { + id: msmlistView + anchors.top: msmtabtopbar.bottom + anchors.topMargin: Kirigami.Units.largeSpacing + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + model: msmskillsModel + delegate: MsmView{} + clip: true; + } +} diff --git a/plasmoid/contents/ui/StackObjDelegate.qml b/plasmoid/contents/ui/StackObjDelegate.qml deleted file mode 100644 index 5806f29..0000000 --- a/plasmoid/contents/ui/StackObjDelegate.qml +++ /dev/null @@ -1,159 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Item { - id: stackObjDelegateItm - height: skillTopRowLayout.height + stackObjInner.height + stackObjFooterArea.height + units.gridUnit * 0.5 - width: cbwidth - - Rectangle { - id: contentdlgtitem - width: parent.width - height: parent.height - color: Qt.darker(theme.backgroundColor, 1.2) - border.width: 0.75 - border.color: theme.linkColor - - Item { - id: skillTopRowLayout - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: units.gridUnit * 0.25 - implicitHeight: stackObjHeaderTitle.implicitHeight + units.gridUnit * 0.5 - - Text { - id: stackObjHeaderTitle - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - width: parent.width - wrapMode: Text.Wrap; - font.bold: true; - text: model.sQuestion - color: theme.textColor - } - } - - Item { - id: stackObjInner - anchors.left: parent.left - anchors.right: parent.right - anchors.top: skillTopRowLayout.bottom - anchors.margins: units.gridUnit * 0.25 - implicitHeight: stackObjLink.height - Layout.minimumHeight: units.gridUnit * 2.5 - - Text { - id: stackObjLink - wrapMode: Text.Wrap; - width: parent.width - color: theme.textColor - font.pointSize: 9 - text: i18n("%1", model.sLink) - } - } - - Item { - id: stackObjFooterArea - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - implicitHeight: stackObjLink.height - Layout.minimumHeight: units.gridUnit * 2 - - Rectangle { - id: stackObjAnswerAvailableBg - color: theme.linkColor - width: parent.width / 3 - anchors.left: parent.left - height: parent.height - border.width: 0.75 - border.color: theme.backgroundColor - - Text { - id: stackObjAnswerAvailableLabel - anchors.centerIn: parent - font.pointSize: 9 - color: theme.textColor - - Component.onCompleted:{ - if (sIsAnswered) { - stackObjAnswerAvailableLabel.text = i18n("Answered") - } - else { - stackObjAnswerAvailableLabel.text = i18n("Unanswered") - } - } - } - } - - Rectangle { - id: stackObjAnswerCountBg - color: theme.linkColor - width: parent.width / 3 - anchors.left: stackObjAnswerAvailableBg.right - height: parent.height - border.width: 0.75 - border.color: theme.backgroundColor - - Text { - id: stackObjAnswerCountLabel - anchors.centerIn: parent - text: i18n("Replies: %1", sAnswerCount) - font.pointSize: 9 - color: theme.textColor - } - } - - Rectangle { - id: stackObjAuthorBg - color: theme.linkColor - width: parent.width / 3 - anchors.left: stackObjAnswerCountBg.right - height: parent.height - border.width: 0.75 - border.color: theme.backgroundColor - - Text { - id: stackObjAuthorLabel - anchors.centerIn: parent - text: sAuthor - font.pointSize: 9 - color: theme.textColor - } - } - } - - MouseArea { - anchors.fill: parent - onClicked: { - Qt.openUrlExternally(sLink) - } - } - } -} diff --git a/plasmoid/contents/ui/StackObjType.qml b/plasmoid/contents/ui/StackObjType.qml deleted file mode 100644 index 8748938..0000000 --- a/plasmoid/contents/ui/StackObjType.qml +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtWebKit 3.0 -import QtWebKit.experimental 1.0 - -Rectangle { - id: stackObjBg - height: cbheight - width: cbwidth - color: theme.backgroundColor - -Rectangle { - id: powerdByBg - height: units.gridUnit * 1.25 - width: parent.width - color: theme.linkColor - anchors.top: parent.top - - Text { - id: poweredByLbl - width: parent.width - height: parent.height - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - text: i18n("Powered By StackOverflow") - font.capitalization: Font.SmallCaps - color: theme.textColor - } -} - -ListView { - id: stackObjModelview - anchors.left: parent.left - anchors.right: parent.right - anchors.top: powerdByBg.bottom - anchors.topMargin: units.gridUnit * 0.25 - anchors.bottom: parent.bottom - model: stackLmodel - spacing: 4 - focus: false - interactive: true - clip: true; - delegate: StackObjDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } -} - diff --git a/plasmoid/contents/ui/StockPriceWidget.qml b/plasmoid/contents/ui/StockPriceWidget.qml deleted file mode 100644 index 1eea365..0000000 --- a/plasmoid/contents/ui/StockPriceWidget.qml +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.0 -import QtQuick.Window 2.2 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.0 -import QtQml.Models 2.2 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras - -Column { - spacing: 6 - //anchors.right: parent.right - //anchors.left: parent.left - - //readonly property bool sentByMe: model.recipient !== "Me" - // property alias mssg: messageText.text - property alias currentstockprice: stockWidgetPrice.text - property alias currentstocksymbol: stockWidgetSymbol.text - - - Row { - id: messageRow - spacing: 6 - - Rectangle{ - id: messageWrapper - width: cbwidth - height: messageRect.height - color: theme.backgroundColor - - Rectangle { - id: messageRect - width: cbwidth / 1.1 - height: messageText.implicitHeight + 24 - //anchors.right: avatar.right - color: theme.backgroundColor - - PlasmaComponents.Label { - id: stockWidgetHeader - color: "#ffffff" - text: i18n("Stock Price Info") - style: Text.Raised - font.italic: false - textFormat: Text.AutoText - anchors.top: parent.top - anchors.topMargin: 30 - wrapMode: Text.NoWrap - font.bold: true - font.family: "Times New Roman" - anchors.right: parent.right - anchors.rightMargin: 0 - anchors.left: parent.left - anchors.leftMargin: 10 - font.pixelSize: 30 - } - - PlasmaComponents.Label { - id: stockWidgetSymbol - color: "#ffffff" - text: i18n("Text") - font.bold: true - anchors.top: stockWidgetHeader.bottom - anchors.topMargin: 15 - anchors.right: parent.right - style: Text.Raised - font.family: "Times New Roman" - anchors.rightMargin: 0 - anchors.left: parent.left - anchors.leftMargin: 40 - font.pixelSize: 35 - - PlasmaComponents.Label { - id: stockWidgetPriceLabel - color: "#ffffff" - text: i18n("Stock Price:") - font.italic: true - font.family: "Times New Roman" - style: Text.Raised - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: 0 - anchors.left: parent.left - anchors.leftMargin: 150 - font.pixelSize: 24 - - PlasmaComponents.Label { - id: stockWidgetPrice - color: "#ffffff" - text: i18n("128.89") - font.italic: true - style: Text.Raised - font.family: "Times New Roman" - font.bold: true - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 124 - anchors.right: parent.right - anchors.rightMargin: 0 - font.pixelSize: 27 - } - } - } - - } - } -} -} diff --git a/plasmoid/contents/ui/Suggestions.qml b/plasmoid/contents/ui/Suggestions.qml deleted file mode 100644 index 070a423..0000000 --- a/plasmoid/contents/ui/Suggestions.qml +++ /dev/null @@ -1,240 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Controls 2.2 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras - -Rectangle { - id: suggestionsmainitem - color: theme.backgroundColor - anchors.fill: parent - property alias suggest1: suggestiontext1.text - property alias suggest2: suggestiontext2.text - property alias suggest3: suggestiontext3.text - - Rectangle { - id: suggestionbutton1 - color: theme.backgroundColor - anchors.top: parent.top - anchors.topMargin: 0 - anchors.bottom: parent.bottom - anchors.bottomMargin: 0 - border.width: 0.2 - border.color: theme.textColor - anchors.left: parent.left - anchors.leftMargin: 0 - width: suggestionsmainitem.width / 3 - - PlasmaCore.IconItem { - id: suggest1imageicon - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.5 - source: "set-language" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - - MouseArea { - id: mouseArea1 - anchors.fill: parent - hoverEnabled: true - - onEntered: { - suggestionbutton1.color = theme.textColor - suggestiontext1.color = theme.backgroundColor - } - - onExited: { - suggestionbutton1.color = theme.backgroundColor - suggestiontext1.color = theme.textColor - } - - onClicked: { - //var suggest1 = qinput.text - //var lastIndex = suggest1.lastIndexOf(" "); - //qinput.text = suggest1.substring(0, lastIndex) + " " + suggestiontext1.text + " " - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [qinput.text]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - - PlasmaComponents.Label { - id: suggestiontext1 - text: i18n("Ask Another") - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - } - } - - PlasmaCore.SvgItem { - id: suggestbarDividerline1 - anchors { - left: suggestionbutton1.right - //rightMargin: units.gridUnit * 0.25 - top: parent.top - topMargin: 0 - bottom: parent.bottom - bottomMargin: 0 - } - - width: linesuggest1vertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: linesuggest1vertSvg; - imagePath: "widgets/line" - } - } - - Rectangle { - id: suggestionbutton2 - color: theme.backgroundColor - anchors.bottom: parent.bottom - anchors.bottomMargin: 0 - anchors.top: parent.top - anchors.topMargin: 0 - anchors.right: suggestionbutton3.left - anchors.rightMargin: 0 - border.width: 0.2 - anchors.left: suggestbarDividerline1.right - anchors.leftMargin: 0 - border.color: theme.textColor - - PlasmaCore.IconItem { - id: suggest2imageicon - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 1.3 - source: "gtk-stop" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - - MouseArea { - id: mouseArea2 - anchors.fill: parent - hoverEnabled: true - - onEntered: { - suggestionbutton2.color = theme.textColor - suggestiontext2.color = theme.backgroundColor - } - - onExited: { - suggestionbutton2.color = theme.backgroundColor - suggestiontext2.color = theme.textColor - } - - onClicked: { - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = ["stop"]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - - PlasmaComponents.Label { - id: suggestiontext2 - text: i18n("Stop") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - PlasmaCore.SvgItem { - id: suggestbarDividerline2 - anchors { - right: suggestionbutton3.left - top: parent.top - topMargin: 0 - bottom: parent.bottom - bottomMargin: 0 - } - - width: linesuggest2vertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: linesuggest2vertSvg; - imagePath: "widgets/line" - } - } - - Rectangle { - id: suggestionbutton3 - color: theme.backgroundColor - anchors.bottom: parent.bottom - anchors.bottomMargin: 0 - anchors.top: parent.top - border.color: theme.textColor - anchors.topMargin: 0 - anchors.right: parent.right - anchors.rightMargin: 0 - border.width: 0.2 - width: parent.width / 3 - - PlasmaCore.IconItem { - id: suggest3imageicon - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 1.3 - source: "code-function" - width: units.gridUnit * 2 - height: units.gridUnit * 2 - } - - MouseArea { - id: mouseArea3 - anchors.fill: parent - hoverEnabled: true - - onEntered: { - suggestionbutton3.color = theme.textColor - suggestiontext3.color = theme.backgroundColor - } - - onExited: { - suggestionbutton3.color = theme.backgroundColor - suggestiontext3.color = theme.textColor - } - - onClicked: { - convoLmodel.clear() - if(dashswitch.checked == true && dashLmodel.count == 0){ - showDash("setVisible") - } - } - } - - PlasmaComponents.Label { - id: suggestiontext3 - text: i18n("Clear") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } -} diff --git a/plasmoid/contents/ui/SwitchButton.qml b/plasmoid/contents/ui/SwitchButton.qml deleted file mode 100644 index 053d137..0000000 --- a/plasmoid/contents/ui/SwitchButton.qml +++ /dev/null @@ -1,105 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Templates 2.0 as T -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 - - -T.Switch { - id: control - - implicitWidth: indicator.implicitWidth - implicitHeight: switchHandle.implicitHeight - - property alias circolour: rectangle.color - - indicator: Rectangle { - id: switchHandle - implicitWidth: units.gridUnit * 1.5 - implicitHeight: units.gridUnit * 0.3 - x: control.leftPadding - anchors.verticalCenter: parent.verticalCenter - radius: units.gridUnit * 0.4 - color: Qt.darker(theme.textColor, 1.2) - border.color: theme.backgroundColor - - Rectangle { - id: rectangle - anchors.verticalCenter: parent.verticalCenter - width: units.gridUnit * 0.6 - height: units.gridUnit * 0.6 - radius: units.gridUnit * 3 - color: Qt.lighter(theme.backgroundColor, 1.5) - border.color: theme.textColor - } - - states: [ - State { - name: "off" - when: !control.checked && !control.down - }, - State { - name: "on" - when: control.checked && !control.down - - PropertyChanges { - target: switchHandle - color: Qt.lighter(theme.backgroundColor, 1.5) - border.color: theme.textColor - } - - PropertyChanges { - target: rectangle - x: parent.width - width - - } - }, - State { - name: "off_down" - when: !control.checked && control.down - - PropertyChanges { - target: rectangle - color: theme.textColor - } - - }, - State { - name: "on_down" - extend: "off_down" - when: control.checked && control.down - - PropertyChanges { - target: rectangle - x: parent.width - width - color: theme.textColor - } - - PropertyChanges { - target: switchHandle - color: theme.backgroundColor - border.color: theme.backgroundColor - } - } - ] - } -} diff --git a/plasmoid/contents/ui/TomorrowWeatherType.qml b/plasmoid/contents/ui/TomorrowWeatherType.qml deleted file mode 100644 index 6d44926..0000000 --- a/plasmoid/contents/ui/TomorrowWeatherType.qml +++ /dev/null @@ -1,162 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQuick.Window 2.2 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.2 -import QtQml.Models 2.2 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras - -Column { - spacing: 6 - property alias lttemp: lowtempitem.text - property alias httemp: hightempitem.text - - Row { - id: messageRow - spacing: 6 - - Rectangle{ - id: messageWrapper - width: cbwidth - height: messageRect.height - color: theme.backgroundColor - - Rectangle { - id: messageRect - width: cbwidth / 1.1 - height: 100 - //anchors.right: avatar.right - color: theme.backgroundColor - - - Rectangle { - id: rectangleltt - width: 100 - height: 60 - color: "#00000000" - anchors.top: todayweather.bottom - anchors.topMargin: 5 - anchors.left: parent.left - anchors.leftMargin: 0 - - PlasmaComponents.Label { - id: lowtemplable - anchors.left: parent.left - anchors.verticalCenter: lowtempaniimage.verticalCenter - text: i18n("Low") -// font.family: "Courier" - font.pointSize: 12 - font.bold: true - anchors.top: parent.top - anchors.topMargin: 8 - anchors.leftMargin: 30 - } - - PlasmaComponents.Label { - id: lowtempitem - x: 63 - y: 33 - anchors.top: lowtemplable.bottom - text: i18n("100") - anchors.horizontalCenter: lowtemplable.horizontalCenter - anchors.topMargin: 10 - } - - PlasmaComponents.Label { - id: weatherwidgetlowtempdegree - text: i18n("°") - anchors.verticalCenterOffset: -5 - anchors.verticalCenter: lowtempitem.verticalCenter - anchors.left: lowtempitem.right - anchors.leftMargin: 5 - font.pixelSize: 12 - } - - - } - - Rectangle { - id: rectanglehtt - width: 100 - height: 60 - color: "#00000000" - anchors.top: todayweather.bottom - anchors.topMargin: 5 - anchors.left: rectangleltt.right - anchors.leftMargin: 0 - - PlasmaComponents.Label { - id: hightempitem - x: 65 - y: 70 - anchors.top: hightemplable.bottom - text: i18n("100") - anchors.topMargin: 10 - anchors.horizontalCenter: hightemplable.horizontalCenter - } - - PlasmaComponents.Label { - id: hightemplable - anchors.left: parent.left - text: i18n("High") - font.pointSize: 12 - font.bold: true - // font.family: "Courier" - anchors.top: parent.top - anchors.topMargin: 8 - anchors.verticalCenter: hightempaniimage.verticalCenter - anchors.leftMargin: 30 - } - - PlasmaComponents.Label { - id: weatherwidgethightempdegree - text: i18n("°") - anchors.verticalCenterOffset: -5 - anchors.verticalCenter: hightempitem.verticalCenter - anchors.left: hightempitem.right - anchors.leftMargin: 5 - font.pixelSize: 12 - } - - - } - - PlasmaComponents.Label { - id: todayweather - text: i18n("Tomorrow's Weather") - anchors.left: parent.left - anchors.leftMargin: 9 - // font.family: "Courier" - font.italic: false - font.bold: true - font.pixelSize: 17 - } - - - - } - } - - } -} diff --git a/plasmoid/contents/ui/TopBarAnim.qml b/plasmoid/contents/ui/TopBarAnim.qml index 00b878f..b49d45c 100644 --- a/plasmoid/contents/ui/TopBarAnim.qml +++ b/plasmoid/contents/ui/TopBarAnim.qml @@ -1,247 +1,167 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ import QtQuick 2.9 +import QtQuick.Layouts 1.3 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.kirigami 2.5 as Kirigami Item { - - property alias topanimrun: seqrun.running - //anchors.fill: parent - function wsistalking() { - if(statusId.visible == true){ - numanimtest.running = true + function startTalking() { + animRunTime.running = true + seqrun.running = true + canvasmiddlegraphics.opacity = 1 + } + + function stopTalking() { + if(animRunTime.interval = 100){ + animRunTime.running = false seqrun.running = false + canvasmiddlegraphics.opacity = 0 } - else if(statusId.visible == false){ - seqrun.running = true - canvasmiddlegraphics.visible = !canvasmiddlegraphics.visible - } -} - - function showstatsId() { - canvasmiddlegraphics.opacity = 0 - statusId.visible = true } - SequentialAnimation{ - id: numanimtest - - SequentialAnimation { - - PropertyAnimation { - id: n1test - target: statusId - property: "opacity" - from: 1; - to: 0; - duration: 3000 - } - - PropertyAnimation { - id: n1testr - target: statusId - property: "visible" - from: true; - to: false; - duration: 2000 + + Timer{ + id: animRunTime + interval: 100 + repeat: true + running: false + onTriggered: { + canvasmiddlegraphics.i += Math.PI/180 + canvasmiddlegraphics.amplitude += Math.PI/180 + Math.floor(Math.random() * 2) + 1 + canvasmiddlegraphics.amplitude -= Math.PI/180 + Math.floor(Math.random() * 2) + 1 + while(canvasmiddlegraphics.i >= Math.PI && canvasmiddlegraphics.amplitude >= Math.PI) canvasmiddlegraphics.i -= 2*Math.PI } - - PropertyAnimation { - id: n1testn - target: statusId - property: "opacity" - from: 0; - to: 1; - duration: 20 - } } - - NumberAnimation{ - id: n2testop - target: canvasmiddlegraphics - property: "opacity" - from: 0; - to: 1; - duration: 300 - } -} - - SequentialAnimation { + + + SequentialAnimation { id: seqrun - ParallelAnimation { - NumberAnimation{ - target: canvasmiddlegraphics - property: "i" - from: -50 - to: -70 - duration: 200 - } - SequentialAnimation { loops: 10 - + ParallelAnimation { - NumberAnimation{ - target: canvasmiddlegraphics - property: "amplitude" - from: 0 - to: 10 + Math.floor(Math.random() * 6) + 1 - duration: 12 - } + NumberAnimation{ + target: canvasmiddlegraphics + property: "amplitude" + from: 0 + to: 10 + Math.floor(Math.random() * 6) + 1 + duration: 12 } + } ParallelAnimation { - NumberAnimation{ - target: canvasmiddlegraphics - property: "amplitude" - from: 10 - to: 16 + Math.floor(Math.random() * 2) + 1 - duration: 12 - + NumberAnimation{ + target: canvasmiddlegraphics + property: "amplitude" + from: 10 + to: 16 + Math.floor(Math.random() * 2) + 1 + duration: 12 } } ParallelAnimation{ - NumberAnimation{ - target: canvasmiddlegraphics - property: "amplitude" - from: 16 + Math.floor(Math.random() * 2) + 1 - to: 10 + Math.floor(Math.random() * 6) + 1 - duration: 12 + NumberAnimation{ + target: canvasmiddlegraphics + property: "amplitude" + from: 16 + Math.floor(Math.random() * 2) + 1 + to: 10 + Math.floor(Math.random() * 6) + 1 + duration: 12 } - } - - ParallelAnimation { - NumberAnimation{ - target: canvasmiddlegraphics - property: "amplitude" - from: 10 + Math.floor(Math.random() / 6) + 1 - to: 0 - duration: 12 - } - } - } - } - ParallelAnimation { - - PropertyAnimation { - target: canvasmiddlegraphics - property: "visible" - from: true - to: false - duration: 20 + ParallelAnimation { + NumberAnimation{ + target: canvasmiddlegraphics + property: "amplitude" + from: 10 + Math.floor(Math.random() / 6) + 1 + to: 0 + duration: 12 + } } } } Canvas { - id:canvasmiddlegraphics - width: parent.width - height: parent.height - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - visible: true - opacity: 0 - - property color strokeStyle: Qt.darker(fillStyle, 1.5) - property color fillStyle: Qt.darker(theme.linkColor, 1.1) - property real lineWidth: 1.6 - property bool fill: true - property bool stroke: false - property real alpha: 1.0 - property real scale : 1 - property real rotate : 0 - property real i: -50 - property real waveSpeed: 10 - property real amplitude: 0 - antialiasing: true - smooth: true - - onLineWidthChanged:requestPaint(); - onFillChanged:requestPaint(); - onStrokeChanged:requestPaint(); - onScaleChanged:requestPaint(); - onRotateChanged:requestPaint(); - onIChanged: requestPaint(); - - renderTarget: Canvas.FramebufferObject - renderStrategy: Canvas.Cooperative - - - onPaint: { - var ctxside = canvasmiddlegraphics.getContext('2d'); - var ctxside2 = canvasmiddlegraphics.getContext('2d'); - var hCenter = width * 0.5 - var vCenter = height * 0.5 - var size = 12 - var period = 15; - var dotSpeed = 5; - - function draw_line(i){ - var oStartx=0; - var oStarty=( height / 2 ) - ctxside.beginPath(); - ctxside.moveTo( oStartx, oStarty + amplitude * Math.sin( x / period + ( i / 5 ) ) ); - ctxside.lineWidth = 1; - ctxside.strokeStyle = theme.linkColor; - - for(var Vx = oStartx; Vx < width * 0.95; Vx++) { - var Vy = amplitude * Math.sin( Vx / period + ( i / 5 + Math.floor(Math.random() * 2) + 0)); - ctxside.lineTo( oStartx + Vx, oStarty + Vy); - } - - ctxside.stroke(); - } - - - function draw_line_rev(i){ - var oStartx=-10; - var oStarty=(height / 2) - ctxside2.beginPath(); - ctxside2.moveTo( oStartx, oStarty + amplitude * Math.sin( x / period + ( i / 5 ) ) ); - ctxside2.lineWidth = 2; - ctxside2.strokeStyle = theme.linkColor; - - for(var Vx = Math.random(oStartx); Vx < width * 1; Vx++) { - var Vy = Math.random() * amplitude * Math.sin( Vx / period + ( i / 5 + Math.floor(Math.random() * 2) + 0)); - ctxside2.lineTo( oStartx + Vx, oStarty + Vy); - } - - ctxside2.stroke(); - } - - - function render(){ - var st = i - ctxside.clearRect(0, 0, width, height); - ctxside2.clearRect(0, 0, width, height); - draw_line(st) - draw_line_rev(st) - } - render(); - } + id:canvasmiddlegraphics + width: parent.width + height: Kirigami.Units.gridUnit * 2 + anchors.centerIn: parent + visible: true + + property color strokeStyle: Qt.darker(fillStyle, 1.5) + property color fillStyle: Qt.darker(theme.linkColor, 1.1) + property real lineWidth: 5 + property bool fill: true + property bool stroke: true + property real alpha: 1.0 + property real scale : 1 + property real rotate : 0 + property real i: 0 + property real waveSpeed: 10 + property real amplitude: 0 + antialiasing: true + smooth: true + opacity: 0 + + onIChanged: requestPaint(); + + renderTarget: Canvas.FramebufferObject + renderStrategy: Canvas.Cooperative + + + onPaint: { + var ctxside = canvasmiddlegraphics.getContext('2d'); + var hCenter = width * 0.5 + var vCenter = height * 0.5 + var size = 12 + var period = 15; + var dotSpeed = 5; + + function draw_line(i){ + var oStartx=0; + var oStarty=( height / 2 ) + ctxside.beginPath(); + ctxside.moveTo( oStartx, oStarty + amplitude * Math.sin( x / period + ( i / 5 ) ) ); + ctxside.lineWidth = 1; + ctxside.strokeStyle = theme.linkColor; + + for(var Vx = oStartx; Vx < width * 0.95; Vx++) { + var Vy = amplitude * Math.sin( Vx / period + ( i / 5 + Math.floor(Math.random() * 2) + 0)); + ctxside.lineTo( oStartx + Vx, oStarty + Vy); + } + + ctxside.stroke(); + } + + + function render(){ + var st = i + ctxside.clearRect(0, 0, width, height); + draw_line(st) + } + render(); + } } } diff --git a/plasmoid/contents/ui/TopBarViewComponent.qml b/plasmoid/contents/ui/TopBarViewComponent.qml new file mode 100644 index 0000000..bf60b6f --- /dev/null +++ b/plasmoid/contents/ui/TopBarViewComponent.qml @@ -0,0 +1,154 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 as Controls +import QtQuick.Layouts 1.3 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.extras 2.0 as PlasmaExtras +import org.kde.kirigami 2.5 as Kirigami +import QtGraphicalEffects 1.0 +import Mycroft 1.0 as Mycroft + +Item { + id: topBarBGrect + property alias talkAnimation: midbarAnim + property alias micIcon: qinputmicbx.iconSource + + Connections { + target: Mycroft.MycroftController + onSpeakingChanged: { + if (Mycroft.MycroftController.speaking){ + midbarAnim.startTalking() + } + else { + midbarAnim.stopTalking() + } + } + onListeningChanged: { + if (Mycroft.MycroftController.listening){ + midbarAnim.startTalking() + } + else { + midbarAnim.stopTalking() + } + } + } + + RowLayout { + anchors.fill: parent + + Image { + id: logoImageArea + Layout.alignment: Qt.AlignLeft + Layout.preferredWidth: Kirigami.Units.gridUnit * 1.4 + Layout.preferredHeight: Kirigami.Units.gridUnit * 1.5 + source: "../images/mycroftsmaller.png" + } + + PlasmaComponents.Label { + Layout.alignment: Qt.AlignLeft + Layout.leftMargin: Kirigami.Units.smallSpacing + font.capitalization: Font.SmallCaps + id: logoTextArea + text: i18n("Mycroft") + font.bold: false; + color: theme.textColor + } + + PlasmaCore.SvgItem { + id: topbarLeftDividerline + Layout.fillHeight: true + Layout.preferredWidth: linetopleftvertSvg.elementSize("vertical-line").width + elementId: "vertical-line" + + svg: PlasmaCore.Svg { + id: linetopleftvertSvg; + imagePath: "widgets/line" + } + } + + TopBarAnim { + id: midbarAnim + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 2 - Kirigami.Units.largeSpacing * 2 + Layout.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing + + PlasmaComponents.Label { + anchors.centerIn: parent + opacity: Mycroft.MycroftController.status != Mycroft.MycroftController.Open + text: i18n("Disconnected") + wrapMode: Text.WordWrap + } + } + + PlasmaCore.SvgItem { + id: topbarDividerline + Layout.fillHeight: true + Layout.preferredWidth: linetopvertSvg.elementSize("vertical-line").width + elementId: "vertical-line" + + svg: PlasmaCore.Svg { + id: linetopvertSvg; + imagePath: "widgets/line" + } + } + + PlasmaComponents.ToolButton { + id: startBtn + Layout.alignment: Qt.AlignRight + iconSource: Mycroft.MycroftController.status != Mycroft.MycroftController.Open ? "draw-triangle2" : "media-playback-pause" + tooltip: i18n("Connect") + flat: true + Layout.preferredWidth: Math.round(Kirigami.Units.gridUnit * 2) + height: Layout.preferredWidth + onClicked: { + if(Mycroft.MycroftController.status != Mycroft.MycroftController.Open) { + Mycroft.MycroftController.start(); + } else { + Mycroft.MycroftController.disconnectSocket(); + } + } + } + + + PlasmaComponents.ToolButton { + id: qinputmicbx + Layout.alignment: Qt.AlignRight + iconSource: "mic-on" + tooltip: i18n("Toggle Mic") + flat: true + Layout.preferredWidth: Math.round(Kirigami.Units.gridUnit * 2) + height: Layout.preferredWidth + } + + PlasmaComponents.ToolButton { + id: pinButton + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: Math.round(Kirigami.Units.gridUnit * 1.5) + height: Layout.preferredWidth + checkable: true + iconSource: "window-pin" + onCheckedChanged: plasmoid.hideOnWindowDeactivate = !checked + } + } +} diff --git a/plasmoid/contents/ui/VideoFileDelegate.qml b/plasmoid/contents/ui/VideoFileDelegate.qml deleted file mode 100644 index d713b28..0000000 --- a/plasmoid/contents/ui/VideoFileDelegate.qml +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtMultimedia 5.8 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: videoFileDelegateItm - implicitHeight: videoFileDelegateInner.height - color: Qt.darker(theme.backgroundColor, 1.2) - width: cbwidth - - Item { - id: videoFileDelegateInner - implicitHeight: Math.max(videoInnerInfoColumn.height, playVideoBtn.height + units.gridUnit * 1) - width: parent.width - - PlasmaCore.IconItem { - id: videoImgType - source: "videoclip-amarok" - anchors.left: parent.left - width: units.gridUnit * 1 - height: units.gridUnit * 1 - anchors.verticalCenter: parent.verticalCenter - } - - Item { - id: videoInnerInfoColumn - implicitHeight: videoFileName.implicitHeight + sprTrinnerVideo.height + videoFileLoc.implicitHeight + units.gridUnit * 0.50 - anchors.left: videoImgType.right - anchors.leftMargin: units.gridUnit * 0.30 - anchors.right: playVideoBtn.left - anchors.rightMargin: units.gridUnit * 0.30 - - PlasmaComponents.Label { - id: videoFileName - color: theme.textColor - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.topMargin: units.gridUnit * 0.25 - wrapMode: Text.Wrap - - Component.onCompleted: { - var filterName = InputQuery.toString(); - videoFileName.text = filterName.match(/\/([^\/]+)\/?$/)[1] - } - } - - Rectangle { - id: sprTrinnerVideo - anchors.left: parent.left - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 1 - anchors.top: videoFileName.bottom - anchors.topMargin: units.gridUnit * 0.15 - color: theme.linkColor - height: units.gridUnit * 0.1 - } - - PlasmaComponents.Label { - id: videoFileLoc - color: theme.linkColor - font.pixelSize: 12 - anchors.left: parent.left - anchors.right: parent.right - anchors.top: sprTrinnerVideo.bottom - - wrapMode: Text.Wrap - Component.onCompleted: { - videoFileLoc.text = i18n("Location: %1", InputQuery) - } - } - } - - PlasmaComponents.Button { - id: playVideoBtn - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.75 - anchors.verticalCenter: parent.verticalCenter - width: units.gridUnit * 3.5 - height: units.gridUnit * 3 - text: i18n("Play") - - onClicked: { - var vidFile = Qt.resolvedUrl(InputQuery) - Qt.openUrlExternally(vidFile) - } - } - } - } diff --git a/plasmoid/contents/ui/WebViewType.qml b/plasmoid/contents/ui/WebViewType.qml deleted file mode 100644 index bac0108..0000000 --- a/plasmoid/contents/ui/WebViewType.qml +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa -import QtWebKit 3.0 -import QtWebKit.experimental 1.0 - -Column { - spacing: 6 - anchors.right: parent.right - - Row { - id: messageRow - spacing: 6 - - Rectangle { - id: messageRect - width: cbwidth - radius: 2 - height: newikiFlick.height - color: theme.backgroundColor - - Flickable { - id: newikiFlick - width: messageRect.width - height: units.gridUnit * 10 - - WebView { - id: wikiview - anchors.fill: parent - experimental.preferredMinimumContentsWidth: 450 - url: model.InputQuery - - Rectangle { - id: hoverBg1 - anchors.right: parent.right - anchors.rightMargin: 15 - anchors.top: parent.top - anchors.topMargin: 5 - visible: true - height: units.gridUnit * 2.2 - width: units.gridUnit * 2.2 - radius: 10 - z: 2 - color: theme.backgroundColor - - PlasmaComponents.ToolButton { - id: viewExtendedScreen - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - visible: true - iconSource: "file-zoom-in" - flat: false - checked: false - focus: false - height: units.gridUnit * 2 - width: units.gridUnit * 2 - z: 10 - - onClicked: { - var browsrUrl = model.InputQuery - PlasmaLa.LaunchApp.runCommand("x-www-browser", browsrUrl) - } - } - } - - } - ScrollIndicator.vertical: ScrollIndicator { } - - } - } - } - } diff --git a/plasmoid/contents/ui/WikiDelegate.qml b/plasmoid/contents/ui/WikiDelegate.qml deleted file mode 100644 index 9c0cb5a..0000000 --- a/plasmoid/contents/ui/WikiDelegate.qml +++ /dev/null @@ -1,99 +0,0 @@ -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import QtGraphicalEffects 1.0 - -Rectangle { - id: mainRect - height: headrTitle.height + splitter.height + wikiImg.height + wikisum.height + units.gridUnit * 0.50 - width: cbwidth - border.width: 1 - border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) - layer.enabled: true - layer.effect: DropShadow { - horizontalOffset: 0 - verticalOffset: 1 - radius: 10 - samples: 32 - spread: 0.1 - color: Qt.rgba(0, 0, 0, 0.3) - } - -Column{ - id: mainColWdel - spacing: 2 - anchors.fill: parent - - Row { - id: headerRowWiki - anchors.left: parent.left - anchors.right: parent.right - height: headrTitle.height - spacing: 2 - - Image { - id: headrTitleLogo - width: parent.height - height: parent.height - source: "../images/wikip.png" - } - - PlasmaCore.SvgItem { - id: headerDivWiki - anchors { - top: parent.top - topMargin: 0 - bottom: parent.bottom - bottomMargin: 0 - } - - width: linetopleftvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: linetopleftvertSvg; - imagePath: "widgets/line" - } - } - - PlasmaComponents.Label { - id: headrTitle - anchors.top: parent.top - anchors.topMargin: units.gridUnits * 0.25 - text: i18n("Wikipedia") - font.capitalization: Font.SmallCaps - color: theme.textColor - height: units.gridUnits * 2 - width: parent.width - } - } - - Rectangle { - id: splitter - anchors.left: parent.left - anchors.right: parent.right - height: 1 - color: theme.textColor - } - - Image { - id: wikiImg - width: parent.width - height: units.gridUnit * 3 - source: model.image - } - - PlasmaComponents.Label { - id: wikisum - text: i18n(model.summary) - width: parent.width - wrapMode: Text.Wrap - } - } -} diff --git a/plasmoid/contents/ui/WikiType.qml b/plasmoid/contents/ui/WikiType.qml deleted file mode 100644 index e7ee932..0000000 --- a/plasmoid/contents/ui/WikiType.qml +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: wikiTypeBase - height: cbheight - width: cbwidth - color: theme.backgroundColor - - ListView { - id: wikimodelview - height: cbheight - width: cbwidth - model: wikiLmodel - spacing: 4 - focus: false - interactive: true - clip: true; - delegate: WikiDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } -} - diff --git a/plasmoid/contents/ui/YelpDelegate.qml b/plasmoid/contents/ui/YelpDelegate.qml deleted file mode 100644 index 0086d5b..0000000 --- a/plasmoid/contents/ui/YelpDelegate.qml +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: yelpDelegateItm - height: units.gridUnit * 7 - color: Qt.darker(theme.backgroundColor, 1.2) - anchors.left: parent.left - anchors.right: parent.right - width: cbwidth - - Column { - id: contentdlgtitem - anchors.fill: parent - - Text { - id: yelpname - anchors.left: parent.left - anchors.right: parent.right - wrapMode: Text.WordWrap; - font.bold: true; - text: model.restaurant - color: theme.textColor - } - - Rectangle { - anchors.left: parent.left - anchors.right: parent.right - color: theme.linkColor - height: units.gridUnit * 0.1 - } - - Item { - id: yelpinner - height: units.gridUnit * 5 - width: cbwidth - - Image { - id: yelpImgType - source: model.image_url - anchors.left: parent.left - width: units.gridUnit * 4 - height: units.gridUnit * 5 - } - - Item { - id: yelpInnerInfoColumn - height: parent.height - anchors.left: yelpImgType.right - anchors.right: yelpViewBtn.left - - Text{ - id: yelpCalorieCount - width: parent.width; - color: theme.textColor ; - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - text: i18n("Phone: %1", model.phone) - } - - Text{ - id: yelpDietLabel - color: theme.textColor ; - anchors.top: yelpCalorieCount.bottom - anchors.topMargin: units.gridUnit * 0.2 - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - width: parent.width - text: i18n("Location: %1", model.location) - wrapMode: Text.WrapAnywhere - } - - Text{ - id: yelpHealthTagsLabel - width: parent.width; - color: theme.textColor ; - anchors.top: yelpDietLabel.bottom - anchors.topMargin: units.gridUnit * 0.2 - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - text: i18n("Rating: %1 Stars", model.rating) - } - } - - PlasmaComponents.Button { - id: yelpViewBtn - anchors.top: parent.top - anchors.right: parent.right - width: units.gridUnit * 6; - height: units.gridUnit * 2.5; - text: i18n("Checkout") - onClicked: { - Qt.openUrlExternally(model.url) - } - } - PlasmaComponents.Button { - id: yelpSendMsgBtn - anchors.top: yelpViewBtn.bottom - anchors.right: parent.right - width: units.gridUnit * 6; - height: units.gridUnit * 2.5; - text: i18n("Send As Text") - onClicked: { - var sendmsgUtterance = "send info" - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [sendmsgUtterance]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - } - - Rectangle { - id: yelpFooterSrc - anchors.left: parent.left - anchors.right: parent.right - color: theme.linkColor - height: units.gridUnit * 1 - - Text { - color: theme.textColor ; - font.pixelSize: 10 - text: i18n("Powered By: Yelp.com") - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - } - } - } diff --git a/plasmoid/contents/ui/YelpType.qml b/plasmoid/contents/ui/YelpType.qml deleted file mode 100644 index dcacb16..0000000 --- a/plasmoid/contents/ui/YelpType.qml +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2016 Aditya Mehra - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see . -*/ - -import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents - -Rectangle { - id: yelppartclc - height: cbheight - width: cbwidth - color: theme.backgroundColor - -ListView { - id: yelpmodelview - anchors.fill: parent - model: yelpLmodel - spacing: 4 - focus: false - interactive: true - clip: true; - delegate: YelpDelegate{} - ScrollBar.vertical: ScrollBar { - active: true - policy: ScrollBar.AlwaysOn - snapMode : ScrollBar.SnapAlways - } - } -} - diff --git a/plasmoid/contents/ui/config/configGeneral.qml b/plasmoid/contents/ui/config/configGeneral.qml new file mode 100644 index 0000000..216c720 --- /dev/null +++ b/plasmoid/contents/ui/config/configGeneral.qml @@ -0,0 +1,80 @@ +/* Copyright 2019 Aditya Mehra + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +import QtQuick 2.9 +import QtQml.Models 2.2 +import QtQuick.Controls 2.2 +import QtQuick.Layouts 1.3 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.extras 2.0 as PlasmaExtras +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + +Item { + id: page + property alias cfg_websocketAddress: websocketAddress.text + property alias cfg_notificationSwitch: notificationSwitch.checked + property alias cfg_selectView: selectView.currentIndex + property alias cfg_enableRemoteTTS: enableRemoteTTS.checked + property alias cfg_enableRemoteSTT: enableRemoteSTT.checked + + Kirigami.FormLayout { + anchors.left: parent.left + anchors.right: parent.right + + PlasmaComponents.TextField { + id: websocketAddress + Layout.fillWidth: true + Kirigami.FormData.label: i18n("Websocket Address:") + Component.onCompleted: { + websocketAddress.text = Mycroft.GlobalSettings.webSocketAddress + } + } + + CheckBox { + id: notificationSwitch + Kirigami.FormData.label: i18n ("Additional Settings:") + text: i18n("Enable Notifications") + checked: true + } + + CheckBox { + id: enableRemoteTTS + text: i18n("Enable Remote TTS") + checked: Mycroft.GlobalSettings.usesRemoteTTS + onCheckedChanged: Mycroft.GlobalSettings.usesRemoteTTS = checked + } + + CheckBox { + id: enableRemoteSTT + text: i18n("Enable Remote STT") + checked: false + } + + PlasmaComponents.ComboBox{ + id: selectView + Layout.fillWidth: true + Kirigami.FormData.label: i18n ("Default View:") + model: ["Conversation View", "Dashboard View"] + } + } +} + diff --git a/plasmoid/contents/ui/main.qml b/plasmoid/contents/ui/main.qml index c2c2749..109b65a 100644 --- a/plasmoid/contents/ui/main.qml +++ b/plasmoid/contents/ui/main.qml @@ -1,2052 +1,34 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2019 Aditya Mehra + Copyright 2018 Marco Martin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) version 3, or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 6 of version 3 of the license. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ import QtQuick 2.9 -import QtQml.Models 2.2 -import QtQuick.Controls 2.2 -import QtQuick.Layouts 1.3 -import Qt.WebSockets 1.0 -import Qt.labs.settings 1.0 -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.plasmoid 2.0 -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.components 3.0 as PlasmaComponents3 -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa -import QtWebKit 3.0 -import QtQuick.Window 2.0 -import QtGraphicalEffects 1.0 - -Item { - id: main - Layout.fillWidth: true; - Plasmoid.toolTipMainText: i18n("Mycroft") - Plasmoid.switchWidth: units.gridUnit * 15 - Plasmoid.switchHeight: units.gridUnit * 15 - Layout.minimumHeight: units.gridUnit * 24 - Layout.minimumWidth: units.gridUnit * 26 - - Component.onCompleted: { - mycroftStatusCheckSocket.active = true - detectInstallType(); - refreshAllSkills(); - } - - property var skillList: [] - property alias cbwidth: rectangle2.width - property alias cbheight: rectangle2.height - property var dwrpaddedwidth: main.width + units.gridUnit * 1 - property var cbdrawercontentheight: parent.height + units.gridUnit * 0.5 - rectanglebottombar.height - property string defaultmcorestartpath: "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/startservice.sh" - property string defaultmcorestoppath: "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/stopservice.sh" - property string packagemcorestartcmd: "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/pkgstartservice.sh" - property string packagemcorestopcmd: "/usr/share/plasma/plasmoids/org.kde.plasma.mycroftplasmoid/contents/code/pkgstopservice.sh" - property string customlocstartpath: startsrvcustom.text - property string customlocstoppath: stopsrvcustom.text - property string customloc: " " - property string coreinstallstartpath: defaultmcorestartpath - property string coreinstallstoppath: defaultmcorestoppath - property variant searchIndex: [] - property variant results: [] - property var smintent - property var dataContent - property alias autoCompModel: completionItems - property alias textInput: qinput - property alias plcLmodel: placesListModel - property alias dashLmodel: dashListModel - property alias recipeLmodel: recipesListModel - property alias recipeReadLmodel: recipeReadListModel - property alias stackLmodel: stackexListModel - property alias bookLmodel: bookListModel - property alias wikiLmodel: wikiListModel - property alias yelpLmodel: yelpListModel - property bool intentfailure: false - property bool locationUserSelected: false - property bool connectCtx: false - property bool micIsMuted - property var geoLat - property var geoLong - property var globalcountrycode - property var weatherMetric: "metric" - property date currentDate: new Date() - - Connections { - target: plasmoid - onExpandedChanged: { - if (plasmoid.expanded) { - checkDashStatus() - } - } - } - - Connections { - target: PlasmaLa.Notify - onNotificationStopSpeech: { - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = ["stop"]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - onNotificationShowResponse: { - plasmoid.expanded = !plasmoid.expanded - tabBar.currentTab = mycroftTab - } - } - - Connections { - target: main2 - ignoreUnknownSignals: true - - onSendShowMycroft: { - plasmoid.expanded = !plasmoid.expanded - tabBar.currentTab = mycroftTab - } - onSendShowSkills: { - tabBar.currentTab = mycroftSkillsTab - if(plasmoid.expanded = !plasmoid.expanded){ - plasmoid.expanded - } - } - onInstallList: { - tabBar.currentTab = mycroftMSMinstTab - if(plasmoid.expanded = !plasmoid.expanded){ - plasmoid.expanded - } - } - onKioMethod: { - var sentFromKio = msgKioMethod - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [sentFromKio]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - } - - function detectInstallType(){ - if(locationUserSelected == false && PlasmaLa.FileReader.file_exists_local("/usr/bin/mycroft-messagebus")){ - settingsTabUnitsOpOne.checked = true - coreinstallstartpath = packagemcorestartcmd - coreinstallstoppath = packagemcorestopcmd - } - } - - function checkDashStatus(){ - if(dashListModel.count == 0){ - checkConnectionStatus() - } - } - - function checkConnectionStatus(){ - var isConnected = PlasmaLa.ConnectionCheck.checkConnection() - if(!isConnected){ - if(!connectCtx){ - var conError = i18n("I am not connected to the internet, Please check your network connection") - convoLmodel.append({"itemType": "NonVisual", "InputQuery": conError}); - connectCtx = true - } - } - else { - geoDataSource.connectedSources = ["location"] - } - } - - function toggleInputMethod(selection){ - switch(selection){ - case "KeyboardSetActive": - qinput.visible = true - suggestionbottombox.visible = true - customMicIndicator.visible = false - keybindic.color = "green" - break - case "KeyboardSetDisable": - qinput.visible = false - suggestionbottombox.visible = false - customMicIndicator.visible = true - keybindic.color = theme.textColor - break - } - } - - function filterSpeak(msg){ - convoLmodel.append({ - "itemType": "NonVisual", - "InputQuery": msg - }) - inputlistView.positionViewAtEnd(); - } - - function filterincoming(intent, metadata) { - var intentVisualArray = ['handle_current_weather']; - var itemType - var filterintentname = intent.split(':'); - var intentname = filterintentname[1]; - - if (intentVisualArray.indexOf(intentname) !== -1) { - switch (intentname){ - case "handle_current_weather": - itemType = "CurrentWeather" - break; - } - convoLmodel.append({"itemType": itemType, "itemData": metadata}) - } - - else { - convoLmodel.append({"itemType": "WebViewType", "InputQuery": metadata.url}) - } - } - - function filtervisualObj(metadata){ - convoLmodel.append({"itemType": "LoaderType", "InputQuery": metadata.url}) - inputlistView.positionViewAtEnd(); - } - - function filterplacesObj(metadata){ - var filteredData = JSON.parse(metadata.data); - var locallat = JSON.parse(metadata.locallat); - var locallong = JSON.parse(metadata.locallong); - var hereappid = metadata.appid - var hereappcode = metadata.appcode; - convoLmodel.clear() - placesListModel.clear() - for (var i = 0; i < filteredData.results.items.length; i++){ - var itemsInPlaces = JSON.stringify(filteredData.results.items[i]) - var fltritemsinPlc = JSON.parse(itemsInPlaces) - var fltrtags = getTags(filteredData.results.items[i].tags) - placesListModel.insert(i, {placeposition: JSON.stringify(fltritemsinPlc.position), placetitle: JSON.stringify(fltritemsinPlc.title), placedistance: JSON.stringify(fltritemsinPlc.distance), placeloc: JSON.stringify(fltritemsinPlc.vicinity), placeicon: JSON.stringify(fltritemsinPlc.icon), placetags: fltrtags, placelocallat: locallat, placelocallong: locallong, placeappid: hereappid, placeappcode: hereappcode}) - } - convoLmodel.append({"itemType": "PlacesType", "InputQuery": ""}); - } - - function getTags(fltrTags){ - if(fltrTags){ - var tags = ''; - for (var i = 0; i < fltrTags.length; i++){ - if(tags) - tags += ', ' + fltrTags[i].title; - else - tags += fltrTags[i].title; - } - return tags; - } - return ''; - } - - function filterRecipeObj(metadata){ - var filteredData = JSON.parse(metadata.data); - convoLmodel.clear() - recipeLmodel.clear() - for (var i = 0; i < filteredData.hits.length; i++){ - var itemsInRecipes = filteredData.hits[i].recipe - var itemsReadRecipe = itemsInRecipes.ingredientLines.join(",") - var itemsReadRecipeHealthTags = itemsInRecipes.healthLabels[0] - var itemsReadRecipeDietType = itemsInRecipes.dietLabels.join(",") - var itemsReadRecipeCalories = Math.round(itemsInRecipes.calories) - if(itemsReadRecipeDietType == ""){ - itemsReadRecipeDietType = "Normal" - } - recipeLmodel.insert(i, {recipeLabel: itemsInRecipes.label, recipeSource: itemsInRecipes.source, recipeImageUrl: itemsInRecipes.image, recipeCalories: itemsReadRecipeCalories, recipeIngredientLines: itemsReadRecipe, recipeDiet: itemsReadRecipeDietType, recipeHealthTags: itemsReadRecipeHealthTags}) - } - convoLmodel.append({"itemType": "RecipeType", "InputQuery": ""}) - } - - function filterBalooObj(metadata){ - var BalooObj = metadata; - var baloosearchTerm = metadata.searchType - convoLmodel.clear() - for (var i = 0; i < BalooObj.data.length; i++){ - if(baloosearchTerm == "type:audio"){ - convoLmodel.append({"itemType": "AudioFileType", "InputQuery": metadata.data[i]}) - } - if(baloosearchTerm == "type:video"){ - convoLmodel.append({"itemType": "VideoFileType", "InputQuery": metadata.data[i]}) - } - if(baloosearchTerm == "type:document" || baloosearchTerm == "type:spreadsheet" || baloosearchTerm == "type:presentation" || baloosearchTerm == "type:archive" ){ - convoLmodel.append({"itemType": "DocumentFileType", "InputQuery": metadata.data[i]}) - } - } - } - - function filterstackObj(metadata){ - var filterStackMeta = JSON.parse(metadata.data) - convoLmodel.clear() - stackexListModel.clear() - for (var i = 0; i < filterStackMeta.items.length; i++){ - stackexListModel.insert(i, {sQuestion: filterStackMeta.items[i].title, sLink: filterStackMeta.items[i].link, sAuthor: filterStackMeta.items[i].owner.display_name, sIsAnswered: filterStackMeta.items[i].is_answered, sAnswerCount: filterStackMeta.items[i].answer_count}) - } - convoLmodel.append({"itemType": "StackObjType", "InputQuery": ""}) - inputlistView.positionViewAtEnd(); - } - - function filterbookObj(metadata){ - var filterBookMeta = JSON.parse(metadata.data) - bookListModel.clear() - bookListModel.append({bookcover: filterBookMeta.bkcover, bookurl: filterBookMeta.bkurl, bookstatus: filterBookMeta.bkstatus, booktitle: filterBookMeta.bktitle, bookauthor: filterBookMeta.bkauthor, bookdate: filterBookMeta.bkyear, bookpublisher: filterBookMeta.bkpublisher}) - convoLmodel.append({"itemType": "BookType", "InputQuery": ""}) - inputlistView.positionViewAtEnd(); - } - - function filterwikiObj(metadata){ - var wikiSummary = JSON.stringify(metadata.data.summary) - var wikiImage = JSON.stringify(metadata.data.image) - wikiSummary = wikiSummary.replace(/['"]+/g, '') - wikiImage = wikiImage.replace(/['"]+/g, '') - convoLmodel.clear() - wikiListModel.clear() - wikiListModel.append({summary: wikiSummary, image: wikiImage}) - convoLmodel.append({"itemType": "WikiType", "InputQuery": ""}) - inputlistView.positionViewAtEnd(); - } - - function filterwikiMoreObj(metadata){ - var wikiSummaryMore = JSON.stringify(metadata.data.summarymore) - var wikiImageMore = JSON.stringify(metadata.data.imagemore) - convoLmodel.clear() - wikiListModel.clear() - wikiSummaryMore = wikiSummaryMore.replace(/['"]+/g, '') - wikiImageMore = wikiImageMore.replace(/['"]+/g, '') - wikiListModel.append({summary: wikiSummaryMore, image: wikiImageMore}) - convoLmodel.append({"itemType": "WikiType", "InputQuery": ""}) - } - - function filteryelpObj(metadata){ - var filtermetayelp = metadata - yelpListModel.clear() - yelpListModel.append({'restaurant': filtermetayelp.data.restaurant, 'phone': filtermetayelp.data.phone, 'location': filtermetayelp.data.location, 'status': filtermetayelp.data.status, 'url': filtermetayelp.data.url, 'image_url': filtermetayelp.data.image_url, 'rating': filtermetayelp.data.rating}) - convoLmodel.append({"itemType": "YelpType", "InputQuery": ""}) - } - - function isBottomEdge() { - return plasmoid.location == PlasmaCore.Types.BottomEdge; - } - - function clearList() { - inputlistView.clear() - } - - function checkMicrophoneState(){ - var socketmessage = {}; - socketmessage.type = "mycroft.mic.get_status"; - socketmessage.data = {}; - socket.sendTextMessage(JSON.stringify(socketmessage)); - } - - function muteMicrophone() { - var socketmessage = {}; - socketmessage.type = "mycroft.mic.mute"; - socketmessage.data = {}; - socket.sendTextMessage(JSON.stringify(socketmessage)); - qinputmicbx.iconSource = "mic-off" - } - - function unmuteMicrophone(){ - var socketmessage = {}; - socketmessage.type = "mycroft.mic.unmute"; - socketmessage.data = {}; - socket.sendTextMessage(JSON.stringify(socketmessage)); - qinputmicbx.iconSource = "mic-on" - } - - function refreshAllSkills(){ - getSkills(); - msmskillsModel.reload(); - } - - function getAllSkills(){ - if(skillList.length <= 0){ - getSkills(); - } - return skillList; - } - function getSkillByName(skillName){ - var tempSN=[]; - for(var i = 0; i Connection error") - statusId.color = "red" - mycroftstartservicebutton.circolour = "red" - midbarAnim.showstatsId() - statusRetryBtn.visible = true - statusRetryBtn.enabled = true - drawer.open() - waitanimoutter.aniRunError() - delay(1250, function() { - drawer.close() - }) - - } else if (socket.status == WebSocket.Open) { - statusId.text = i18n("Connected") - statusId.color = "green" - statusRetryBtn.visible = false - statusRetryBtn.enabled = false - mycroftstartservicebutton.circolour = "green" - mycroftStatusCheckSocket.active = false; - midbarAnim.showstatsId() - PlasmaLa.Notify.mycroftConnectionStatus("Connected") - drawer.open() - waitanimoutter.aniRunHappy() - delay(1250, function() { - drawer.close() - checkMicrophoneState() - }) - } else if (socket.status == WebSocket.Closed) { - statusId.text = i18n("Disabled") - statusId.color = theme.textColor - PlasmaLa.Notify.mycroftConnectionStatus("Disconnected") - mycroftstartservicebutton.circolour = Qt.lighter(theme.backgroundColor, 1.5) - midbarAnim.showstatsId() - } else if (socket.status == WebSocket.Connecting) { - statusId.text = i18n("Starting up..please wait") - statusId.color = theme.linkColor - mycroftstartservicebutton.circolour = "steelblue" - midbarAnim.showstatsId() - } else if (socket.status == WebSocket.Closing) { - statusId.text = i18n("Shutting down") - statusId.color = theme.textColor - midbarAnim.showstatsId() - } - } - - ColumnLayout { - id: sidebar - height: units.gridUnit * 6 - width: units.gridUnit * 2 - - PlasmaComponents.TabBar { - id: tabBar - anchors.fill: parent - tabPosition: Qt.LeftEdge; - - PlasmaComponents.TabButton { - id: mycroftTab - Layout.fillHeight: true - Layout.fillWidth: true - iconSource: "go-home" - - PlasmaCore.ToolTipArea { - id: tooltiptab1 - mainText: i18n("Conversation") - anchors.fill: parent - } - - } - - PlasmaComponents.TabButton { - id: mycroftSkillsTab - Layout.fillHeight: true - Layout.fillWidth: true - iconSource: "games-hint" - - PlasmaCore.ToolTipArea { - id: tooltiptab2 - mainText: i18n("Hints/Tips") - anchors.fill: parent - } - - } - - PlasmaComponents.TabButton { - id: mycroftSettingsTab - Layout.fillHeight: true - Layout.fillWidth: true - iconSource: "games-config-options" - - PlasmaCore.ToolTipArea { - id: tooltiptab3 - mainText: i18n("Settings") - anchors.fill: parent - } - - } - - PlasmaComponents.TabButton { - id: mycroftMSMinstTab - Layout.fillHeight: true - Layout.fillWidth: true - iconSource: "kmouth-phresebook-new" - - - PlasmaCore.ToolTipArea { - id: tooltiptab4 - mainText: i18n("Skill Browser") - anchors.fill: parent - } - - } - - } - } - PlasmaCore.SvgItem { - anchors { - left: parent.left - leftMargin: sidebar.width - top: parent.top - topMargin: 1 - bottom: parent.bottom - bottomMargin: 1 - } - - width: lineSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: lineSvg; - imagePath: "widgets/line" - } - } - - ColumnLayout { - id: mycroftcolumntab - visible: tabBar.currentTab == mycroftTab; - anchors.top: root.top - anchors.left: sidebar.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.right: root.right - anchors.bottom: root.bottom - - Item { - id: rectangle2 - anchors.top: mycroftcolumntab.top - anchors.topMargin:15 - anchors.left: mycroftcolumntab.left - anchors.right: mycroftcolumntab.right - anchors.bottom: mycroftcolumntab.bottom - - DropArea { - anchors.fill: parent; - id: dragTarget - onEntered: { - for(var i = 0; i < drag.urls.length; i++) - if(validateFileExtension(drag.urls[i])) - return - console.log("No valid files, refusing drag event") - drag.accept() - dragTarget.enabled = false - } - - onDropped: { - for(var i = 0; i < drop.urls.length; i++){ - var ext = getFileExtenion(drop.urls[i]); - if(ext === "jpg" || ext === "png" || ext === "jpeg"){ - var durl = String(drop.urls[i]); - convoLmodel.append({ - "itemType": "DropImg", - "InputQuery": durl - }) - inputlistView.positionViewAtEnd(); - } - - if(ext === 'mp3'){ - console.log('mp3'); - } - } - } - - Disclaimer{ - id: disclaimbox - visible: false - } - - ListModel{ - id: convoLmodel - } - - Item { - id: messageBox - anchors.fill: parent - - ColumnLayout { - id: colconvo - anchors.fill: parent - - ListView { - id: inputlistView - Layout.fillWidth: true - Layout.fillHeight: true - verticalLayoutDirection: ListView.TopToBottom - spacing: 12 - clip: true - model: convoLmodel - ScrollBar.vertical: ScrollBar {} - delegate: Component { - Loader { - source: switch(itemType) { - case "NonVisual": return "SimpleMessageType.qml" - case "WebViewType": return "WebViewType.qml" - case "CurrentWeather": return "CurrentWeatherType.qml" - case "DropImg" : return "ImgRecogType.qml" - case "AskType" : return "AskMessageType.qml" - case "LoaderType" : return "LoaderType.qml" - case "PlacesType" : return "PlacesType.qml" - case "RecipeType" : return "RecipeType.qml" - case "DashboardType" : return "DashboardType.qml" - case "AudioFileType" : return "AudioFileDelegate.qml" - case "VideoFileType" : return "VideoFileDelegate.qml" - case "DocumentFileType" : return "DocumentFileDelegate.qml" - case "FallBackType" : return "FallbackWebSearchType.qml" - case "StackObjType" : return "StackObjType.qml" - case "BookType" : return "BookType.qml" - case "WikiType" : return "WikiType.qml" - case "YelpType" : return "YelpType.qml" - } - property var metacontent : dataContent - } - } - - onCountChanged: { - inputlistView.positionViewAtEnd(); - } - } - } - } - } - } - } - - ColumnLayout { - id: mycroftSkillscolumntab - visible: tabBar.currentTab == mycroftSkillsTab; - anchors.top: root.top - anchors.left: sidebar.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.right: root.right - anchors.bottom: root.bottom - - ListView { - id: skillslistmodelview - anchors.top: parent.top - anchors.topMargin: 5 - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - model: SkillModel{} - delegate: SkillView{} - spacing: 4 - focus: false - interactive: true - clip: true; - } - - } - - ColumnLayout { - id: mycroftSettingsColumn - visible: tabBar.currentTab == mycroftSettingsTab; - anchors.top: root.top - anchors.left: sidebar.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.right: root.right - anchors.bottom: root.bottom - - PlasmaComponents.TabBar { - id: settingstabBar - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent. right - height: units.gridUnit * 2 - tabPosition: Qt.TopEdge; - - PlasmaComponents.TabButton { - id: generalSettingsTab - text: i18n("General") - } - - PlasmaComponents.TabButton { - id: dashSettingsTab - text: i18n("Dash") - } - } - - Item { - id: settingscontent - Layout.fillWidth: true; - Layout.fillHeight: true; - anchors.top: settingstabBar.bottom - anchors.topMargin: units.gridUnit * 0.50 - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - visible: settingstabBar.currentTab == generalSettingsTab; - - Flickable { - id: settingFlick - anchors.fill: parent; - contentWidth: mycroftSettingsColumn.width - contentHeight: units.gridUnit * 22 - clip: true; - - PlasmaComponents.Label { - id: settingsTabUnits - anchors.top: parent.top; - anchors.topMargin: 5 - text: i18n("Your Mycroft Core Installation Path") - } - - PlasmaComponents.ButtonColumn { - id: radiobuttonColoumn - anchors.top: settingsTabUnits.bottom - anchors.topMargin: 5 - - PlasmaComponents.RadioButton { - id: settingsTabUnitsOpZero - exclusiveGroup: installPathGroup - text: i18n("Default Path") - checked: true - - onCheckedChanged: { - locationUserSelected = true - if (settingsTabUnitsOpZero.checked === true && coreinstallstartpath === packagemcorestartcmd) { - coreinstallstartpath = defaultmcorestartpath; - } - else if (settingsTabUnitsOpZero.checked === true && coreinstallstartpath === customlocstartpath) { - coreinstallstartpath = defaultmcorestartpath; - } - - if (settingsTabUnitsOpZero.checked === true && coreinstallstoppath === packagemcorestopcmd) { - coreinstallstoppath = defaultmcorestoppath; - } - - else if (settingsTabUnitsOpZero.checked === true && coreinstallstoppath === customlocstoppath) { - coreinstallstoppath = defaultmcorestoppath; - } - } - } - - PlasmaComponents.RadioButton { - id: settingsTabUnitsOpOne - exclusiveGroup: installPathGroup - text: i18n("Installed Using Mycroft Package") - checked: false - - onCheckedChanged: { - - if (settingsTabUnitsOpOne.checked === true && coreinstallstartpath === defaultmcorestartpath) { - coreinstallstartpath = packagemcorestartcmd; - } - else if (settingsTabUnitsOpOne.checked === true && coreinstallstartpath === customlocstartpath) { - coreinstallstartpath = packagemcorestartcmd; - } - - if (settingsTabUnitsOpOne.checked === true && coreinstallstoppath === defaultmcorestoppath) { - coreinstallstoppath = packagemcorestopcmd; - } - - else if (settingsTabUnitsOpOne.checked === true && coreinstallstoppath === customlocstoppath) { - coreinstallstoppath = packagemcorestopcmd; - } - } - } - - PlasmaComponents.RadioButton { - id: settingsTabUnitsOpTwo - exclusiveGroup: installPathGroup - text: i18n("Location of Mycroft-Core Directory") - checked: false - - onCheckedChanged: { - locationUserSelected = true - if (settingsTabUnitsOpTwo.checked === true && coreinstallstartpath === defaultmcorestartpath) { - coreinstallstartpath = customlocstartpath; - } - else if (settingsTabUnitsOpTwo.checked === true && coreinstallstartpath === packagemcorestartcmd) { - coreinstallstartpath = customlocstartpath; - } - - if (settingsTabUnitsOpTwo.checked === true && coreinstallstoppath === defaultmcorestoppath) { - coreinstallstoppath = customlocstoppath; - } - - else if (settingsTabUnitsOpTwo.checked === true && coreinstallstoppath === packagemcorestopcmd) { - coreinstallstoppath = customlocstoppath; - } - - } - } - } - - PlasmaComponents.TextField { - id: settingsTabUnitsOpThree - width: settingscontent.width / 1.1 - anchors.top: radiobuttonColoumn.bottom - anchors.topMargin: 10 - placeholderText: i18n("/mycroft-core/") - - onTextChanged: { - var cstloc = settingsTabUnitsOpThree.text - customloc = cstloc - } - } - - PlasmaComponents.Button { - id: acceptcustomPath - anchors.left: settingsTabUnitsOpThree.right - anchors.verticalCenter: settingsTabUnitsOpThree.verticalCenter - anchors.right: parent.right - iconSource: "checkbox" - - onClicked: { - var cstlocl = customloc - var ctstart = cstlocl + "start-mycroft.sh all" - var ctstop = cstlocl + "stop-mycroft.sh" - startsrvcustom.text = ctstart - stopsrvcustom.text = ctstop - console.log(startsrvcustom.text) - } - } - - PlasmaComponents.TextField { - id: settingsTabUnitsWSpath - width: settingscontent.width / 1.1 - anchors.top: settingsTabUnitsOpThree.bottom - anchors.topMargin: 10 - placeholderText: i18n("ws://0.0.0.0:8181/core") - text: i18n("ws://0.0.0.0:8181/core") - } - - PlasmaComponents.Button { - id: acceptcustomWSPath - anchors.left: settingsTabUnitsWSpath.right - anchors.verticalCenter: settingsTabUnitsWSpath.verticalCenter - anchors.right: parent.right - iconSource: "checkbox" - - onClicked: { - innerset.wsurl = settingsTabUnitsWSpath.text - } - } - - - PlasmaComponents.TextField { - id: settingsTabUnitsIRCmd - width: settingscontent.width / 1.1 - anchors.top: settingsTabUnitsWSpath.bottom - anchors.topMargin: 10 - placeholderText: i18n("Your Custom Image Recognition Skill Voc Keywords") - text: i18n("search image url") - } - - PlasmaComponents.Button { - id: acceptcustomIRCmd - anchors.left: settingsTabUnitsIRCmd.right - anchors.verticalCenter: settingsTabUnitsIRCmd.verticalCenter - anchors.right: parent.right - iconSource: "checkbox" - } - - - PlasmaComponents.TextField { - id: settingsTabUnitsOCRCmd - width: settingscontent.width / 1.1 - anchors.top: settingsTabUnitsIRCmd.bottom - anchors.topMargin: 10 - placeholderText: i18n("Your Custom Image OCR Skill Voc Keywords") - text: i18n("ocr image url") - } - - PlasmaComponents.Button { - id: acceptcustomOCRCmd - anchors.left: settingsTabUnitsOCRCmd.right - anchors.verticalCenter: settingsTabUnitsOCRCmd.verticalCenter - anchors.right: parent.right - iconSource: "checkbox" - } - - - PlasmaComponents.Switch { - id: notificationswitch - anchors.top: settingsTabUnitsOCRCmd.bottom - anchors.topMargin: 10 - text: i18n("Enable Notifications") - checked: true - } - - - PlasmaComponents.Switch { - id: wolframfallbackswitch - anchors.top: notificationswitch.bottom - anchors.topMargin: 10 - text: i18n("Enable Fallback To Wolfram Alpha Web-Search") - checked: true - } - - PlasmaComponents.Label { - id: wolframkeylabel - text: i18n("Wolfram Alpha API:") - anchors.top: wolframfallbackswitch.bottom - anchors.topMargin: 10 - } - - PlasmaComponents.TextField { - id: wolframapikeyfld - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - anchors.left: wolframkeylabel.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: wolframkeylabel.verticalCenter - text: i18n("RJVUY3-T6YLWQVXRR") - } - - PlasmaExtras.Paragraph { - id: settingsTabTF2 - anchors.top: wolframapikeyfld.bottom - anchors.topMargin: 15 - text: i18n("Please Note: Default path is set to /home/$USER/mycroft-core/. Change the above settings to match your installation") - } - - PlasmaComponents.Label { - id: startsrvcustom - visible: false - } - - PlasmaComponents.Label { - id: stopsrvcustom - visible: false - } - } - } - - Item { - id: dashsettingscontent - Layout.fillWidth: true; - Layout.fillHeight: true; - anchors.top: settingstabBar.bottom - anchors.topMargin: units.gridUnit * 0.50 - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - visible: settingstabBar.currentTab == dashSettingsTab; - - Flickable { - id: dashsettingFlick - anchors.fill: parent; - contentWidth: mycroftSettingsColumn.width - contentHeight: units.gridUnit * 22 - clip: true; - - Column { - spacing: 6 - - PlasmaComponents.Switch { - id: dashswitch - text: i18n("Enable / Disable Dashboard") - checked: true - - onCheckedChanged: { - if(dashswitch.checked){ - tabBar.currentTab = mycroftTab - disclaimbox.visible = false - showDash("setVisible") - } - else if(!dashswitch.checked){ - convoLmodel.clear() - if(!socket.active){ - disclaimbox.visible = true - } - } - } - } - - PlasmaComponents.Label { - id: dashSettingsLabel1 - text: i18n("Card Settings:") - font.bold: true; - } - - PlasmaComponents.Switch { - id: disclaimercardswitch - text: i18n("Enable / Disable Disclaimer Card") - checked: true - } - - PlasmaComponents.Switch { - id: newscardswitch - text: i18n("Enable / Disable News Card") - checked: true - } - - PlasmaComponents.Switch { - id: cryptocardswitch - text: i18n("Enable / Disable Cryptocurrency Card") - checked: false - } - - Row { - spacing: 2 - PlasmaComponents.Label{ - id: cryptoCurrencySelected - text: i18n("Selected CryptoCurrency:") - } - PlasmaComponents3.ComboBox { - id: cryptoSelectedBox - textRole: "cryptoname" - displayText: currentText - model: CrypCurModel{} - property string cryptInfo: cryptoSelectedBox.model.get(currentIndex).value - } - } - - PlasmaComponents.Label{ - id: localCurrencySelected - text: i18n("Display Currencies:") - } - - PlasmaComponents3.ComboBox { - id: cryptoSelectCur1 - textRole: "currencyname" - displayText: currentText - model: CurModel{} - property string cur1Info: cryptoSelectCur1.model.get(currentIndex).value - } - - PlasmaComponents3.ComboBox { - id: cryptoSelectCur2 - textRole: "currencyname" - displayText: currentText - model: CurModel{} - property string cur2Info: cryptoSelectCur2.model.get(currentIndex).value - } - - PlasmaComponents3.ComboBox { - id: cryptoSelectCur3 - textRole: "currencyname" - displayText: currentText - model: CurModel{} - property string cur3Info: cryptoSelectCur3.model.get(currentIndex).value - } - - Row { - spacing: 2 - PlasmaComponents.Label { - id: newsApiKeyLabelFld - text: i18n("NewsApi App_Key:") - } - PlasmaComponents.TextField{ - id: newsApiKeyTextFld - width: units.gridUnit * 12 - text: "a1091945307b434493258f3dd6f36698" - } - } - - PlasmaComponents.Switch { - id: weathercardswitch - text: i18n("Enable / Disable Weather Card") - checked: true - } - - Row { - spacing: 2 - PlasmaComponents.Label { - id: owmApiKeyLabelFld - text: i18n("Open Weather Map App_ID:") - } - PlasmaComponents.TextField{ - id: owmApiKeyTextFld - width: units.gridUnit * 12 - text: "7af5277aee7a659fc98322c4517d3df7" - } - } - - Row{ - id: weatherCardMetricsRowList - spacing: 2 - - PlasmaComponents.Button { - id: owmApiKeyMetricCel - text: i18n("Celcius") - onClicked: { - weatherMetric = "metric" - updateCardData() - } - } - PlasmaComponents.Button{ - id: owmApiKeyMetricFar - text: i18n("Fahrenheit") - onClicked: { - weatherMetric = "imperial" - updateCardData() - } - } - } - - } - } - } - } - - ColumnLayout { - id: mycroftMsmColumn - visible: tabBar.currentTab == mycroftMSMinstTab; - anchors.top: root.top - anchors.left: sidebar.right - anchors.leftMargin: units.gridUnit * 0.25 - anchors.right: root.right - anchors.bottom: root.bottom - - Item { - id: msmtabtopbar - width: parent.width - anchors.left: parent.left - anchors.right: parent.right - height: units.gridUnit * 2 - - PlasmaComponents3.ComboBox { - id: versionBox - anchors.left: parent.left - anchors.top: parent.top - anchors.bottom: parent.bottom - width: parent.width / 3.5 - textRole: "key" - displayText: i18n("Version: %1", currentText) - property string versionInfo: versionItem.get(currentIndex).value - - model: ListModel { - id: versionItem - ListElement { key: "19.02"; value: "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/19.02/.gitmodules" } - ListElement { key: "18.08"; value: "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/18.08/.gitmodules" } - ListElement { key: "18.02"; value: "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/18.02/.gitmodules" } - ListElement { key: "17.0x"; value: "https://raw.githubusercontent.com/MycroftAI/mycroft-skills/17.08-and-older/.gitmodules"} - } - onActivated: { - msmskillsModel.clear(); - getSkills(); - } - } - - PlasmaComponents.TextField { - id: msmsearchfld - anchors.left: versionBox.right - anchors.leftMargin: units.gridUnit * 0.50 - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.right: getskillsbx.left - placeholderText: i18n("Search Skills") - clearButtonShown: true - - onTextChanged: { - if(text.length > 0 ) { - msmskillsModel.applyFilter(text.toLowerCase()); - } else { - msmskillsModel.reload(); - } - } - } - - PlasmaComponents.ToolButton { - id: getskillsbx - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - iconSource: "view-refresh" - tooltip: i18n("Refresh List") - flat: true - width: Math.round(units.gridUnit * 2) - height: width - z: 102 - - onClicked: { - msmskillsModel.clear(); - refreshAllSkills(); - } - } - } - - ListModel { - id: msmskillsModel - - Component.onCompleted: { - reload(); - } - - function reload() { - var skList = getAllSkills(); - msmskillsModel.clear(); - for( var i=0; i < skList.length ; ++i ) { - msmskillsModel.append(skList[i]); - } - } - - function applyFilter(skName) { - var skList = getSkillByName(skName); - msmskillsModel.clear(); - for( var i=0; i < skList.length ; ++i ) { - msmskillsModel.append(skList[i]); - } - } - } - - ListView { - id: msmlistView - anchors.top: msmtabtopbar.bottom - anchors.topMargin: 5 - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - model: msmskillsModel - delegate: MsmView{} - spacing: 4 - focus: false - interactive: true - clip: true; - - } - } -} - - PlasmaCore.SvgItem { - anchors { - left: main.left - right: main.right - bottom: root.bottom - } - width: 1 - height: horlineSvg.elementSize("horizontal-line").height +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.kirigami 2.5 as Kirigami - elementId: "horizontal-line" - z: 110 - svg: PlasmaCore.Svg { - id: horlineSvg; - imagePath: "widgets/line" - } - } - - Item { - id: rectanglebottombar - height: units.gridUnit * 3.5 - anchors.left: main.left - anchors.right: main.right - anchors.bottom: main.bottom - z: 110 - - ListModel { - id: completionItems - } - - Drawer { - id: drawer - width: dwrpaddedwidth - height: units.gridUnit * 5.5 - edge: Qt.BottomEdge - - Rectangle { - color: theme.backgroundColor - anchors.fill: parent - } - - CustomIndicator { - id: waitanimoutter - height: 70 - width: 70 - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Rectangle { - id: suggestionbottombox - anchors.top: parent.top - anchors.bottom: qinput.top - anchors.right: parent.right - anchors.left: parent.left - color: theme.backgroundColor - - Suggestions { - id: suggst - visible: true; - } - } - - Rectangle { - id: keyboardactivaterect - color: theme.backgroundColor - border.width: 1 - border.color: Qt.lighter(theme.backgroundColor, 1.2) - width: units.gridUnit * 2 - height: qinput.height - anchors.bottom: parent.bottom - anchors.left: parent.left + id: root - PlasmaCore.IconItem { - id: keybdImg - source: "input-keyboard" - anchors.centerIn: parent - width: units.gridUnit * 1.5 - height: units.gridUnit * 1.5 - } - - Rectangle { - id: keybindic - anchors.bottom: parent.bottom - anchors.bottomMargin: 4 - anchors.left: parent.left - anchors.right: parent.right - anchors.leftMargin: 8 - anchors.rightMargin: 8 - height: 2 - color: "green" - } - - MouseArea{ - anchors.fill: parent - hoverEnabled: true - onEntered: {} - onExited: {} - onClicked: { - if(qinput.visible === false){ - toggleInputMethod("KeyboardSetActive") - } - else if(qinput.visible === true){ - toggleInputMethod("KeyboardSetDisable") - } - } - } - } - - PlasmaComponents.TextField { - id: qinput - anchors.left: keyboardactivaterect.right - anchors.bottom: parent.bottom - anchors.right: parent.right - placeholderText: i18n("Enter Query or Say 'Hey Mycroft'") - clearButtonShown: true - - onAccepted: { - var doesExist = autoAppend(autoCompModel, function(item) { return item.name === qinput.text }, qinput.text) - var evaluateExist = doesExist - if(evaluateExist === null){ - autoCompModel.append({"name": qinput.text}); - } - suggst.visible = true; - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [qinput.text]; - socket.sendTextMessage(JSON.stringify(socketmessage)); - qinput.text = ""; - } - - onTextChanged: { - evalAutoLogic(); - } - } - - CustomMicIndicator { - id: customMicIndicator - anchors.centerIn: parent - visible: false - } - - AutocompleteBox { - id: suggestionsBox - model: completionItems - width: parent.width - anchors.bottom: qinput.top - anchors.left: parent.left - anchors.right: parent.right - filter: textInput.text - property: "name" - onItemSelected: complete(item) - - function complete(item) { - if (item !== undefined) - textInput.text = item.name - } - } -} + Plasmoid.switchWidth: Kirigami.Units.gridUnit * 10 + Plasmoid.switchHeight: Kirigami.Units.gridUnit * 12 - Settings { - id: innerset - property alias wsurl: settingsTabUnitsWSpath.text - property alias customrecog: settingsTabUnitsIRCmd.text - property alias customocrrecog: settingsTabUnitsOCRCmd.text - property alias customsetuppath: settingsTabUnitsOpThree.text - property alias notifybool: notificationswitch.checked - property alias wolffallbackbool: wolframfallbackswitch.checked - property alias wolframKey: wolframapikeyfld.text - property alias radiobt1: settingsTabUnitsOpOne.checked - property alias radiobt2: settingsTabUnitsOpTwo.checked - property alias radiobt3: settingsTabUnitsOpZero.checked - property alias dashboardSetting: dashswitch.checked - property alias disclaimerCardSetting: disclaimercardswitch.checked - property alias newsCardSetting: newscardswitch.checked - property alias newsCardAPIKey: newsApiKeyLabelFld.text - property alias weatherCardSetting: weathercardswitch.checked - property alias weatherCardAPIKey: owmApiKeyLabelFld.text - property alias weatherMetricC: owmApiKeyMetricCel.checked - property alias weatherMetricF: owmApiKeyMetricFar.checked - property alias versionIndex: versionBox.currentIndex - property alias versionUrl: versionBox.versionInfo - property alias selectedCryptoidx: cryptoSelectedBox.currentIndex - property alias selectedCrypto: cryptoSelectedBox.cryptInfo - property alias selectedCur1idx: cryptoSelectCur1.currentIndex - property alias selectedCur1: cryptoSelectCur1.cur1Info - property alias selectedCur2idx: cryptoSelectCur2.currentIndex - property alias selectedCur2: cryptoSelectCur2.cur2Info - property alias selectedCur3idx: cryptoSelectCur3.currentIndex - property alias selectedCur3: cryptoSelectCur3.cur3Info - } + Plasmoid.fullRepresentation: FullRepresentation {} } diff --git a/plasmoid/metadata.desktop b/plasmoid/metadata.desktop index 1b05ef6..e7079a1 100644 --- a/plasmoid/metadata.desktop +++ b/plasmoid/metadata.desktop @@ -1,62 +1,55 @@ [Desktop Entry] Encoding=UTF-8 Name=MycroftPlasmoid +Name[ast]=MycroftPlasmoid Name[ca]=Plasmoide del Mycroft Name[ca@valencia]=Plasmoide del Mycroft Name[cs]=MycroftPlasmoid Name[de]=MycroftPlasmoid -Name[el]=MycroftPlasmoid Name[en_GB]=MycroftPlasmoid Name[es]=MycroftPlasmoid Name[fi]=MycroftPlasmoid -Name[fr]=MycroftPlasmoid Name[gl]=Plasmoide de Mycroft Name[it]=Plasmoide Mycroft Name[ko]=MycroftPlasmoid Name[nl]=MycroftPlasmoid Name[nn]=MycroftPlasmoid Name[pl]=Plazmoid Mycroft Name[pt]=MycroftPlasmoid -Name[pt_BR]=MycroftPlasmoid Name[sk]=MycroftPlasmoid Name[sv]=Mycroft Plasmoid Name[uk]=Плазмоїд Mycroft Name[x-test]=xxMycroftPlasmoidxx -Name[zh_TW]=MycroftPlasmoid Comment=Mycroft applet for plasma desktop Comment[ca]=Miniaplicació Mycroft per a l'escriptori Plasma Comment[ca@valencia]=Miniaplicació Mycroft per a l'escriptori Plasma Comment[cs]=Applet Mycroft pro pracovní prostředí Plasma Comment[de]=Mycroft-Miniprogramm für die Plasma-Arbeitsfläche -Comment[el]=Η μικροεφαρμογή mycroft για την επιφάνεια εργασίας plasma Comment[en_GB]=Mycroft applet for plasma desktop Comment[es]=Miniaplicación Mycroft para el escritorio Plasma Comment[fi]=Mycroft-sovelma Plasma-työpöydälle -Comment[fr]=Applet Mycroft pour le bureau Plasma Comment[gl]=Trebello de Mycroft para o escritorio Plasma. Comment[it]=Applet di Mycroft per il desktop Plasma Comment[ko]=Plasma 데스크톱용 Mycroft 애플릿 Comment[nl]=Mycroft applet voor Plasma Bureaublad Comment[nn]=Mycroft-skjermelement for Plasma Comment[pl]=Aplet Mycroft dla pulpitu plazmy Comment[pt]='Applet' do Mycroft para o ambiente de trabalho Plasma -Comment[pt_BR]=Miniaplicativo do Mycroft para o ambiente de trabalho Plasma Comment[sk]=Applet Mycroft pre plochu Plasma Comment[sv]=Mycroft miniprogram för Plasma-skrivbordet Comment[uk]=Аплет Mycroft для стільниці Плазми Comment[x-test]=xxMycroft applet for plasma desktopxx -Comment[zh_TW]=適用於 Plasma 桌面的 Mycroft 元件 Type=Service X-KDE-ParentApp= X-KDE-PluginInfo-Author=Aditya Mehra X-KDE-PluginInfo-Email=aix.m@outlook.com X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-Name=org.kde.plasma.mycroftplasmoid X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Website=plasma.kde.org X-KDE-ServiceTypes=Plasma/Applet X-Plasma-API=declarativeappletscript X-Plasma-MainScript=ui/main.qml X-Plasma-RemoteLocation= X-KDE-PluginInfo-Category=Utilities Icon=mycroft-plasma-appicon diff --git a/plugin/CMakeLists.txt b/plugin/CMakeLists.txt index 31eb8e9..bfdce4d 100644 --- a/plugin/CMakeLists.txt +++ b/plugin/CMakeLists.txt @@ -1,15 +1,15 @@ kde_enable_exceptions() add_definitions(-DTRANSLATION_DOMAIN=\"mycroftplasmoidplugin\") -set(mycroftplasmoidplugin_SRCS mycroftplasmoidplugin.cpp launchapp.cpp notify.cpp filereader.cpp msmapp.cpp connectioncheck.cpp mycroftplasmoid_dbus.cpp) +set(mycroftplasmoidplugin_SRCS mycroftplasmoidplugin.cpp notify.cpp mycroftplasmoid_dbus.cpp) add_library(mycroftplasmoidplugin SHARED ${mycroftplasmoidplugin_SRCS}) target_link_libraries(mycroftplasmoidplugin Qt5::Gui Qt5::Core Qt5::Qml Qt5::DBus Qt5::Network KF5::Plasma KF5::I18n KF5::Notifications) install(TARGETS mycroftplasmoidplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/private/mycroftplasmoid) install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/private/mycroftplasmoid) install(FILES mycroftPlasmoid.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR}) diff --git a/plugin/Messages.sh b/plugin/Messages.sh deleted file mode 100644 index 6c337b7..0000000 --- a/plugin/Messages.sh +++ /dev/null @@ -1,2 +0,0 @@ -#! /usr/bin/env bash -$XGETTEXT *.cpp *.h -o $podir/mycroftplasmoidplugin.pot diff --git a/plugin/connectioncheck.cpp b/plugin/connectioncheck.cpp deleted file mode 100644 index 0030d2c..0000000 --- a/plugin/connectioncheck.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#include "connectioncheck.h" - -#include - -ConnectionCheck::ConnectionCheck(QObject *parent) - : QObject(parent) -{ -} - -bool ConnectionCheck::checkConnection(){ - QNetworkAccessManager nam; - QNetworkRequest req(QUrl("http://www.mycroft.ai/")); - QNetworkReply *reply = nam.get(req); - QEventLoop loop; - connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); - loop.exec(); - if(reply->bytesAvailable()) { - return true; - } - else { - return false; - } -} diff --git a/plugin/connectioncheck.h b/plugin/connectioncheck.h deleted file mode 100644 index bfe9047..0000000 --- a/plugin/connectioncheck.h +++ /dev/null @@ -1,38 +0,0 @@ - /* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#ifndef CONNECTIONCHECK_H -#define CONNECTIONCHECK_H - -#include -#include -#include - -class ConnectionCheck : public QObject -{ - Q_OBJECT - -public: - explicit ConnectionCheck(QObject *parent = Q_NULLPTR); - -public Q_SLOTS: - bool checkConnection(); - -}; - -#endif // CONNECTIONCHECK_H diff --git a/plugin/filereader.cpp b/plugin/filereader.cpp deleted file mode 100644 index 1f9a4ea..0000000 --- a/plugin/filereader.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#include "filereader.h" -#include - -FileReader::FileReader(QObject *parent) - : QObject(parent) -{ -} - -QByteArray FileReader::read(const QString &filename) -{ - QFile file(filename); - if (!file.open(QIODevice::ReadOnly)) - return QByteArray(); - - return file.readAll(); -} - -bool FileReader::file_exists_local(const QString &filename) { - return QFile(filename).exists(); -} diff --git a/plugin/filereader.h b/plugin/filereader.h deleted file mode 100644 index 5d4bf14..0000000 --- a/plugin/filereader.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#ifndef FILEREADER_H -#define FILEREADER_H - -#include -#include - -class FileReader : public QObject -{ - Q_OBJECT - -public: - explicit FileReader(QObject *parent = Q_NULLPTR); - -public Q_SLOTS: - QByteArray read(const QString &filename); - bool file_exists_local(const QString &filename); -}; - -#endif // FILEREADER_H diff --git a/plugin/launchapp.cpp b/plugin/launchapp.cpp deleted file mode 100644 index 1603568..0000000 --- a/plugin/launchapp.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#include "launchapp.h" - -#include - -LaunchApp::LaunchApp(QObject *parent) - : QObject(parent) -{ -} - -bool LaunchApp::runCommand(const QString &exe, const QStringList &args) -{ - return QProcess::startDetached(exe, args); -} diff --git a/plugin/launchapp.h b/plugin/launchapp.h deleted file mode 100644 index f91de01..0000000 --- a/plugin/launchapp.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#ifndef LAUNCHAPP_H -#define LAUNCHAPP_H - -#include -#include - -class LaunchApp : public QObject -{ - Q_OBJECT - -public: - explicit LaunchApp(QObject *parent = Q_NULLPTR); - -public Q_SLOTS: - bool runCommand(const QString &exe, const QStringList &args = QStringList()); -}; - -#endif // LAUNCHAPP_H diff --git a/plugin/msmapp.cpp b/plugin/msmapp.cpp deleted file mode 100644 index 238ddd8..0000000 --- a/plugin/msmapp.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#include "msmapp.h" - -#include -#include - -MsmApp::MsmApp(QObject *parent) : - QObject(parent), - m_process(new QProcess(this)) -{ -} - -void MsmApp::msmapp(const QString &program) -{ - m_process->startDetached(program); -} - -QString MsmApp::skillsPath() -{ - QString path = QDir::homePath()+"/.mycroft/skills"; - QDir dir(path); - if (dir.exists()) return path; - return QStringLiteral("/opt/mycroft/skills"); -} diff --git a/plugin/msmapp.h b/plugin/msmapp.h deleted file mode 100644 index fa46ded..0000000 --- a/plugin/msmapp.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2016 by Aditya Mehra * - * 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. - */ - -#ifndef MSMAPP_H -#define MSMAPP_H - -#include -#include - -class MsmApp : public QObject -{ - Q_OBJECT -public: - explicit MsmApp(QObject *parent = 0); - Q_INVOKABLE void msmapp(const QString &program); - - Q_INVOKABLE QString skillsPath(); - -private: - QProcess *m_process; -}; - -#endif // MSMAPP_H diff --git a/plugin/mycroftPlasmoid.notifyrc b/plugin/mycroftPlasmoid.notifyrc index 215f094..4f6250e 100644 --- a/plugin/mycroftPlasmoid.notifyrc +++ b/plugin/mycroftPlasmoid.notifyrc @@ -1,76 +1,68 @@ [Global] IconName=mycroft-plasma-appicon Comment=Mycroft Plasmoid Comment[ca]=Plasmoide del Mycroft Comment[ca@valencia]=Plasmoide del Mycroft Comment[cs]=Plasmoid Mycroft Comment[de]=Mycroft-Plasmoid -Comment[el]=Πλασμοειδές mycroft Comment[en_GB]=Mycroft Plasmoid Comment[es]=Plasmoide Mycroft Comment[fi]=Mycroft-sovelma -Comment[fr]=Composant graphique Mycroft Comment[gl]=Plasmoide de Mycroft Comment[it]=Plasmoide Mycroft Comment[ko]=Mycroft Plasmoid Comment[nl]=Mycroft Plasmoid Comment[nn]=Mycroft-skjermelement Comment[pl]=Plazmoid Mycroft Comment[pt]=Plasmóide do Mycroft Comment[pt_BR]=Plasmoide do Mycroft Comment[sk]=Mycroft Plazmoid Comment[sv]=Mycroft Plasmoid Comment[uk]=Плазмоїд Mycroft Comment[x-test]=xxMycroft Plasmoidxx -Comment[zh_TW]=Mycroft Plasmoid [Event/MycroftResponse] Name=Mycroft Response Name[ca]=Resposta del Mycroft Name[ca@valencia]=Resposta del Mycroft Name[de]=Mycroft-Rückmeldung -Name[el]=Απόκριση mycroft Name[en_GB]=Mycroft Response Name[es]=Respuesta de Mycroft Name[fi]=Mycroftin vastaus -Name[fr]=Réponse Mycroft Name[gl]=Resposta de Mycroft Name[it]=Risposta di Mycroft Name[ko]=Mycroft 응답 Name[nl]=Mycroft reactie Name[nn]=Mycroft-svar Name[pl]=Odpowiedź Mycroft Name[pt]=Resposta do Mycroft Name[pt_BR]=Resposta do Mycroft Name[sk]=Odpoveď Mycroft Name[sv]=Mycroft svar Name[uk]=Відповідь Mycroft Name[x-test]=xxMycroft Responsexx -Name[zh_TW]=Mycroft 回應 Comment=Connection to device failed Comment[ca]=Ha fallat la connexió amb el dispositiu Comment[ca@valencia]=Ha fallat la connexió amb el dispositiu Comment[cs]=Připojení k zařízení selhalo Comment[de]=Die Verbindung zum Gerät ist fehlgeschlagen -Comment[el]=Αποτυχία σύνδεσης στη συσκευή Comment[en_GB]=Connection to device failed Comment[es]=La conexión con el dispositivo ha fallado Comment[fi]=Laitteeseen yhdistäminen epäonnistui Comment[fr]=La connexion au périphérique a échoué Comment[gl]=A conexión co dispositivo fallou. Comment[it]=Connessione al dispositivo non riuscita Comment[ko]=장치에 연결할 수 없음 Comment[nl]=Verbinding met het apparaat is mislukt Comment[nn]=Klarte ikkje kopla til eininga Comment[pl]=Połączenie do urządzenia nie udało się Comment[pt]=A ligação ao dispositivo foi mal-sucedida Comment[pt_BR]=Falha na conexão do dispositivo Comment[ru]=Не удалось подключиться к устройству Comment[sk]=Pripojenie k zariadeniu zlyhalo Comment[sv]=Anslutning till enhet misslyckades Comment[uk]=Не вдалося встановити з’єднання із пристроєм Comment[x-test]=xxConnection to device failedxx Comment[zh_CN]=连接设备失败 -Comment[zh_TW]=連接裝置失敗 Icon=mycroft-plasma-appicon Action=Popup diff --git a/plugin/mycroftplasmoidplugin.cpp b/plugin/mycroftplasmoidplugin.cpp index 0e74bd1..616017e 100644 --- a/plugin/mycroftplasmoidplugin.cpp +++ b/plugin/mycroftplasmoidplugin.cpp @@ -1,77 +1,45 @@ /* * Copyright (C) 2016 by Aditya Mehra * * 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. */ #include "mycroftplasmoidplugin.h" #include "mycroftplasmoid_dbus.h" -#include "launchapp.h" #include "notify.h" -#include "filereader.h" -#include "msmapp.h" -#include "connectioncheck.h" #include #include #include static QObject *notify_singleton(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) Q_UNUSED(scriptEngine) return new Notify; } -static QObject *launchapp_singleton(QQmlEngine *engine, QJSEngine *scriptEngine) -{ - Q_UNUSED(engine) - Q_UNUSED(scriptEngine) - - return new LaunchApp; -} - -static QObject *filereader_singleton(QQmlEngine *engine, QJSEngine *scriptEngine) -{ - Q_UNUSED(engine) - Q_UNUSED(scriptEngine) - - return new FileReader; -} - -static QObject *connectioncheck_singleton(QQmlEngine *engine, QJSEngine *scriptEngine) -{ - Q_UNUSED(engine) - Q_UNUSED(scriptEngine) - - return new ConnectionCheck; -} - void MycroftPlasmoidPlugin::registerTypes(const char *uri) { Q_ASSERT(uri == QLatin1String("org.kde.private.mycroftplasmoid")); qmlRegisterSingletonType(uri, 1, 0, "Notify", notify_singleton); - qmlRegisterSingletonType(uri, 1, 0, "LaunchApp", launchapp_singleton); - qmlRegisterSingletonType(uri, 1, 0, "FileReader", filereader_singleton); - qmlRegisterSingletonType(uri, 1, 0, "ConnectionCheck", connectioncheck_singleton); - qmlRegisterType(uri, 1, 0, "MsmApp"); } void MycroftPlasmoidPlugin::initializeEngine(QQmlEngine* engine, const char* uri) { QQmlExtensionPlugin::initializeEngine(engine, uri); auto mycroftDbusAdapterInterface = new MycroftDbusAdapterInterface(engine); engine->rootContext()->setContextProperty("main2", mycroftDbusAdapterInterface); }