diff --git a/CMakeLists.txt b/CMakeLists.txt index fac4f87..806a62d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,39 +1,38 @@ # Set minimum CMake version (required for CMake 3.0 or later) cmake_minimum_required(VERSION 2.8.12) 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) # 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) plasma_install_package(plasmoid org.kde.plasma.mycroftplasmoid) install( DIRECTORY mycroft DESTINATION ${SYSCONF_INSTALL_DIR}) 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/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/ui/Applet.js b/plasmoid/contents/ui/Applet.js deleted file mode 100644 index 234d9c9..0000000 --- a/plasmoid/contents/ui/Applet.js +++ /dev/null @@ -1,198 +0,0 @@ - function detectInstallType(){ - if(locationUserSelected == false && PlasmaLa.FileReader.file_exists_local("/usr/bin/mycroft-messagebus")){ - settingsTabUnitsOpOne.checked = true - coreinstallstartpath = packagemcorestartcmd - coreinstallstoppath = packagemcorestopcmd - } - } - - 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") - mycroftConversationComponent.conversationModel.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 isBottomEdge() { - return plasmoid.location == PlasmaCore.Types.BottomEdge; - } - - function clearList() { - inputlistView.clear() - } - - function checkMicrophoneState(){ - var socketmessage = {}; - socketmessage.type = "mycroft.mic.get_status"; - socketmessage.data = {}; - socket.onSendMessage(JSON.stringify(socketmessage)); - } - - function muteMicrophone() { - var socketmessage = {}; - socketmessage.type = "mycroft.mic.mute"; - socketmessage.data = {}; - socker.onSendMessage(JSON.stringify(socketmessage)); - topBarView.micIcon = "mic-off" - } - - function unmuteMicrophone(){ - var socketmessage = {}; - socketmessage.type = "mycroft.mic.unmute"; - socketmessage.data = {}; - socker.onSendMessage(JSON.stringify(socketmessage)); - topBarView.micIcon = "mic-on" - } - - function getFileExtenion(filePath){ - var ext = filePath.split('.').pop(); - return ext; - } - - function validateFileExtension(filePath) { - var ext = filePath.split('.').pop(); - return ext === "jpg" || ext === "png" || ext === "jpeg" || ext === 'mp3' || ext === 'wav' || ext === 'mp4' - } - - function readFile(filename) { - if (PlasmaLa.FileReader.file_exists_local(filename)) { - try { - var content = PlasmaLa.FileReader.read(filename).toString("utf-8"); - return content; - } catch (e) { - return 0; - } - } else { - return 0; - } - } - - function playwaitanim(recoginit){ - switch(recoginit){ - case "recognizer_loop:record_begin": - bottomBarView.animationDrawer.open() - bottomBarView.animateStepWorking() - break - case "recognizer_loop:wakeword": - bottomBarView.animateStepHappy() - break - case "intent_failure": - bottomBarView.animateStepError() - intentfailure = true - break - case "recognizer_loop:audio_output_start": - if (intentfailure === false){ - bottomBarView.animationDrawer.close() - } - else { - delay(1500, function() { - bottomBarView.animationDrawer.close() - intentfailure = false; - }) - } - break - case "mycroft.skill.handler.complete": - if (intentfailure === false){ - bottomBarView.animationDrawer.close() - } - else { - delay(1500, function() { - bottomBarView.animationDrawer.close() - intentfailure = false; - }) - } - break - } - } - - function preSocketStatus(){ - if (mycroftStatusCheckSocket.status == WebSocket.Open && socket.status == WebSocket.Closed) { - socket.active = true - mycroftStatusCheckSocket._socketIsAlreadyActive = true - disclaimbox.visible = false; - topBarView.startSwitch.checked = true - topBarView.mycroftStatus.text = i18n("Connected") - topBarView.mycroftStatus.color = "green" - topBarView.mycroftStatus.visible = true - } - - else if (mycroftStatusCheckSocket.status == WebSocket.Error) { - topBarView.startSwitch.checked = false - mycroftStatusCheckSocket._socketIsAlreadyActive = false - topBarView.mycroftStatus.text = i18n("Disabled") - topBarView.mycroftStatus.color = theme.textColor - topBarView.mycroftStatus.visible = true - } - } - - function mainSocketStatus(){ - - if (socket.status == 4) { //error - topBarView.mycroftStatus.text = i18n("Connection error") - topBarView.mycroftStatus.color = "red" - topBarView.startSwitch.circolour = "red" - topBarView.talkAnimation.showstatsId() - topBarView.retryButton.visible = true - topBarView.retryButton.enabled = true - bottomBarView.animationDrawer.open() - bottomBarView.animateStepError() - delay(1250, function() { - bottomBarView.animationDrawer.close() - }) - - } else if (socket.status == 1) { //connected - topBarView.mycroftStatus.text = i18n("Connected") - topBarView.mycroftStatus.color = "green" - topBarView.retryButton.visible = false - topBarView.retryButton.enabled = false - topBarView.startSwitch.circolour = "green" -// mycroftStatusCheckSocket.active = false; - topBarView.talkAnimation.showstatsId() - PlasmaLa.Notify.mycroftConnectionStatus("Connected") - bottomBarView.animationDrawer.open() - bottomBarView.animateStepHappy() - delay(1250, function() { - bottomBarView.animationDrawer.close() - Applet.checkMicrophoneState() - }) - } else if (socket.status == 3) { - topBarView.mycroftStatus.text = i18n("Disabled") - topBarView.mycroftStatus.color = theme.textColor - PlasmaLa.Notify.mycroftConnectionStatus("Disconnected") - topBarView.startSwitch.circolour = Qt.lighter(theme.backgroundColor, 1.5) - topBarView.talkAnimation.showstatsId() - } else if (socket.status == 0) { - topBarView.mycroftStatus.text = i18n("Starting up..please wait") - topBarView.mycroftStatus.color = theme.linkColor - topBarView.startSwitch.circolour = "steelblue" - topBarView.talkAnimation.showstatsId() - } else if (socket.status == 2) { - topBarView.mycroftStatus.text = i18n("Shutting down") - topBarView.mycroftStatus.color = theme.textColor - topBarView.talkAnimation.showstatsId() - } - } diff --git a/plasmoid/contents/ui/AskMessageDelegate.qml b/plasmoid/contents/ui/AskMessageDelegate.qml deleted file mode 100644 index 8209e86..0000000 --- a/plasmoid/contents/ui/AskMessageDelegate.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.itemData.queryData - 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/Autocomplete.js b/plasmoid/contents/ui/Autocomplete.js deleted file mode 100644 index 9007e41..0000000 --- a/plasmoid/contents/ui/Autocomplete.js +++ /dev/null @@ -1,14 +0,0 @@ - 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) - } - } diff --git a/plasmoid/contents/ui/AutocompleteBox.qml b/plasmoid/contents/ui/AutocompleteBox.qml index a0126a4..06191ec 100644 --- a/plasmoid/contents/ui/AutocompleteBox.qml +++ b/plasmoid/contents/ui/AutocompleteBox.qml @@ -1,150 +1,150 @@ /* 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.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 55a00ae..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: "Author: " + bookauthor - } - - PlasmaComponents.Label { - id: bookPublisherLabel - font.capitalization: Font.Capitalize - text: "Publisher: " + bookpublisher - } - - PlasmaComponents.Label { - id: bookYearLabel - font.capitalization: Font.Capitalize - text: "Release Year: " + bookdate - } - - PlasmaComponents.Label { - id: bookAvailableLabel - font.capitalization: Font.Capitalize - text: "Availability: " + bookstatus - } - } - } - } - - Row { - id: buttnRow - height: units.gridUnit * 2 - anchors.top: bookContentInnerItem.bottom - - PlasmaComponents.Button { - id: bookReadOnlineBtn - width: cbwidth / 2 - height: units.gridUnit * 2 - text: "Read Online" - - onClicked: { - Qt.openUrlExternally(bookurl); - } - } - - PlasmaComponents.Button { - id: bookDownloadBtn - width: cbwidth / 2 - height: units.gridUnit * 2 - text: "Download" - - onClicked: { - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = ["download available book"]; - socket.onSendMessage(JSON.stringify(socketmessage)); - } - } - } - } -} diff --git a/plasmoid/contents/ui/BottomBarViewComponent.qml b/plasmoid/contents/ui/BottomBarViewComponent.qml index 0093efc..a38c3ff 100644 --- a/plasmoid/contents/ui/BottomBarViewComponent.qml +++ b/plasmoid/contents/ui/BottomBarViewComponent.qml @@ -1,198 +1,133 @@ /* 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.Controls 2.2 as Controls 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 QtQuick.Window 2.0 +import org.kde.kirigami 2.5 as Kirigami import QtGraphicalEffects 1.0 -import "Applet.js" as Applet -import "Autocomplete.js" as Autocomplete -import "Conversation.js" as Conversation -import "Dashboard.js" as Dash +import Mycroft 1.0 as Mycroft Item { id: appletBottomBarComponent anchors.fill: parent property alias autoCompModel: completionItems property alias queryInput: qinput - property alias animationDrawer: drawer property alias suggestBox: suggst - signal animateStepWorking - signal animateStepHappy - signal animateStepError + property var lastMessage - Connections { - target: appletBottomBarComponent - onAnimateStepWorking: { - console.log("Here") - waitanimoutter.aniRunWorking() - } - onAnimateStepHappy: { - waitanimoutter.aniRunHappy() - } - onAnimateStepError: { - waitanimoutter.aniRunError() + 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 } - Drawer { - id: drawer - width: dwrpaddedwidth - height: units.gridUnit * 5.5 - edge: Qt.BottomEdge - - Rectangle { + ColumnLayout { + anchors.fill: parent + + Rectangle { + id: suggestionbottombox + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 2 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 - - 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" - } + Suggestions { + id: suggst + anchors.fill: parent - MouseArea{ - anchors.fill: parent - hoverEnabled: true - onEntered: {} - onExited: {} - onClicked: { - if(qinput.visible === false){ - toggleInputMethod("KeyboardSetActive") + Connections { + target: suggestionsmainitem + onEmitAsk: { + console.log(lastMessage) + Mycroft.MycroftController.sendText(lastMessage); + root.pushMessage(lastMessage, false); + } + onEmitStop:{ + Mycroft.MycroftController.sendText("stop"); } - else if(qinput.visible === true){ - toggleInputMethod("KeyboardSetDisable") + onEmitClear: { + conversationModel.clear(); } } } } - - 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 = Autocomplete.autoAppend(autoCompModel, function(item) { return item.name === qinput.text }, qinput.text) - var evaluateExist = doesExist - if(evaluateExist === null){ - autoCompModel.append({"name": qinput.text}); + + 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); + root.pushMessage(qinput.text, false); + qinput.text = ""; } - suggst.visible = true; - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [qinput.text]; - socket.onSendMessage(JSON.stringify(socketmessage)); - qinput.text = ""; + + onTextChanged: { + appletBottomBarComponent.evalAutoLogic(); } - - onTextChanged: { - Autocomplete.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 + 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 + } } + } } } diff --git a/plasmoid/contents/ui/Conversation.js b/plasmoid/contents/ui/Conversation.js deleted file mode 100644 index 5f86890..0000000 --- a/plasmoid/contents/ui/Conversation.js +++ /dev/null @@ -1,140 +0,0 @@ - function getFallBackResult(failedQuery){ - var url = "http://api.wolframalpha.com/v1/simple?appid=" + innerset.wolframKey + "&i=" + failedQuery + "&width=1024&fontsize=32" - mycroftConversationComponent.conversationModel.append({itemType: "FallBackType", inputQuery: "", itemData:{fallbackUrl: url}}) - } - - function filterSpeak(msg){ - mycroftConversationComponent.conversationModel.append({itemType: "NonVisual", inputQuery: "", itemData:{queryData: msg}}) - mycroftConversationComponent.conversationListView.positionViewAtEnd(); - } - - function filterincoming(intent, metadata) { - var intentVisualArray = ['handle_current_weather']; - var itemType - var filterintentname = intent.split(':'); - var intentname = filterintentname[1]; - console.log("IntentName: " + intentname) - if (intentVisualArray.indexOf(intentname) !== -1) { - switch (intentname){ - case "handle_current_weather": - itemType = "CurrentWeather" - break; - } - mycroftConversationComponent.conversationModel.append({itemType: itemType, inputQuery: "", itemData:{weatherData: metadata}}) - } - - else { - mycroftConversationComponent.conversationModel.append({itemType: "WebViewType", inputQuery: "", itemData:{webviewUrl: metadata.url}}) - } - } - - function filtervisualObj(metadata){ - mycroftConversationComponent.conversationModel.append({itemType: "LoaderType", inputQuery: "", itemData:{loaderUrl: metadata.url}}) - mycroftConversationComponent.conversationListView.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; - mycroftConversationComponent.conversationModel.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) - mycroftConversationComponent.conversationModel.append({itemType: "PlacesType", inputQuery: "", itemData:{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}}) - } - } - - 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); - mycroftConversationComponent.conversationModel.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" - } - mycroftConversationComponent.conversationModel.append({itemType: "RecipeType", inputQuery: "", itemData:{recipeLabel: itemsInRecipes.label, recipeSource: itemsInRecipes.source, recipeImageUrl: itemsInRecipes.image, recipeCalories: itemsReadRecipeCalories, recipeIngredientLines: itemsReadRecipe, recipeDiet: itemsReadRecipeDietType, recipeHealthTags: itemsReadRecipeHealthTags}}) - } - } - - function filterBalooObj(metadata){ - var BalooObj = metadata; - var baloosearchTerm = metadata.searchType - mycroftConversationComponent.conversationModel.clear() - for (var i = 0; i < BalooObj.data.length; i++){ - if(baloosearchTerm == "type:audio"){ - mycroftConversationComponent.conversationModel.append({itemType: "AudioFileType", inputQuery: "", itemData:{balooData: metadata.data[i]}}) - } - if(baloosearchTerm == "type:video"){ - mycroftConversationComponent.conversationModel.append({itemType: "VideoFileType", inputQuery: "", itemData:{balooData: metadata.data[i]}}) - } - if(baloosearchTerm == "type:document" || baloosearchTerm == "type:spreadsheet" || baloosearchTerm == "type:presentation" || baloosearchTerm == "type:archive" ){ - mycroftConversationComponent.conversationModel.append({itemType: "DocumentFileType", inputQuery: "", itemData:{balooData: metadata.data[i]}}) - } - } - } - - function filterstackObj(metadata){ - var filterStackMeta = JSON.parse(metadata.data) - mycroftConversationComponent.conversationModel.clear() - for (var i = 0; i < filterStackMeta.items.length; i++){ - mycroftConversationComponent.conversationModel.append({itemType: "StackObjType", inputQuery: "", itemData:{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}}) - } - mycroftConversationComponent.conversationListView.positionViewAtEnd(); - } - - function filterbookObj(metadata){ - var filterBookMeta = JSON.parse(metadata.data) - mycroftConversationComponent.conversationModel.clear() - mycroftConversationComponent.conversationModel.append({itemType: "BookType", inputQuery: "", itemData:{bookcover: filterBookMeta.bkcover, bookurl: filterBookMeta.bkurl, bookstatus: filterBookMeta.bkstatus, booktitle: filterBookMeta.bktitle, bookauthor: filterBookMeta.bkauthor, bookdate: filterBookMeta.bkyear, bookpublisher: filterBookMeta.bkpublisher}}) - mycroftConversationComponent.conversationListView.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, '') - mycroftConversationComponent.conversationModel.clear() - mycroftConversationComponent.conversationModel.append({itemType: "WikiType", inputQuery: "", itemData:{summary: wikiSummary, image: wikiImage}}) - mycroftConversationComponent.conversationListView.positionViewAtEnd(); - } - - function filterwikiMoreObj(metadata){ - var wikiSummaryMore = JSON.stringify(metadata.data.summarymore) - var wikiImageMore = JSON.stringify(metadata.data.imagemore) - mycroftConversationComponent.conversationModel.clear() - wikiSummaryMore = wikiSummaryMore.replace(/['"]+/g, '') - wikiImageMore = wikiImageMore.replace(/['"]+/g, '') - mycroftConversationComponent.conversationModel.append({itemType: "WikiType", inputQuery: "", itemData:{summary: wikiSummaryMore, image: wikiImageMore}}) - } - - function filteryelpObj(metadata){ - var filtermetayelp = metadata - mycroftConversationComponent.conversationModel.append({itemType: "YelpType", inputQuery: "", itemData:{'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}}) - } - - function filterImageObject(metadata){ - mycroftConversationComponent.conversationModel.append({itemType: "ImageType", inputQuery: "", itemData:{imageData: metadata.data}}) - } diff --git a/plasmoid/contents/ui/ConversationDelegate.qml b/plasmoid/contents/ui/ConversationDelegate.qml new file mode 100644 index 0000000..ed8650d --- /dev/null +++ b/plasmoid/contents/ui/ConversationDelegate.qml @@ -0,0 +1,80 @@ +/* Copyright 2016 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/ConversationLogic.js b/plasmoid/contents/ui/ConversationLogic.js deleted file mode 100644 index 47b5b3e..0000000 --- a/plasmoid/contents/ui/ConversationLogic.js +++ /dev/null @@ -1,107 +0,0 @@ -function filterConversation(msgType, somestring){ - if (msgType === "mycroft.mic.get_status.response") { - var micState = somestring.data.muted - if(micState) { - micIsMuted = true - topBarView.micIcon = "mic-off" - } - else if(!micState) { - micIsMuted = false - topBarView.micIcon = "mic-on" - } - } - - if (msgType === "mycroft.skills.initialized") { - PlasmaLa.Notify.mycroftConnectionStatus(i18n("Ready..Let's Talk")) - } - - if (msgType === "recognizer_loop:utterance") { - bottomBarView.queryInput.focus = false; - var intpost = somestring.data.utterances; - bottomBarView.queryInput.text = intpost.toString() - mycroftConversationComponent.conversationModel.append({itemType: "AskType", inputQuery: "", itemData:{queryData: intpost.toString()}}) - topBarView.animateTalk() - } - - if (msgType === "recognizer_loop:utterance" && dashLmodel.count != 0){ - Dash.showDash("setHide") - } - - if (somestring.data.handler === "fallback" && somestring.data.fallback_handler === "WolframAlphaSkill.handle_fallback" && somestring.type === "mycroft.skill.handler.complete"){ - if(wolframfallbackswitch.checked == true){ - Conversation.getFallBackResult(bottomBarView.queryInput.text) - } - } - - if (somestring && somestring.data && typeof somestring.data.intent_type !== 'undefined'){ - smintent = somestring.data.intent_type; - console.log(smintent) - } - - if(somestring && somestring.data && typeof somestring.data.utterance !== 'undefined' && somestring.type === 'speak'){ - Conversation.filterSpeak(somestring.data.utterance); - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "data") { - dataContent = somestring.data.desktop - Conversation.filterincoming(smintent, dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "visualObject") { - dataContent = somestring.data.desktop - Conversation.filtervisualObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "placesObject") { - dataContent = somestring.data.desktop - Conversation.filterplacesObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "recipesObject") { - dataContent = somestring.data.desktop - Conversation.filterRecipeObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "balooObject") { - dataContent = somestring.data.desktop - Conversation.filterBalooObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "stackresponseObject") { - dataContent = somestring.data.desktop - Conversation.filterstackObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "bookObject") { - dataContent = somestring.data.desktop - Conversation.filterbookObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "wikiObject") { - dataContent = somestring.data.desktop - Conversation.filterwikiObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "wikiaddObject") { - dataContent = somestring.data.desktop - Conversation.filterwikiMoreObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "yelpObject") { - dataContent = somestring.data.desktop - Conversation.filteryelpObj(dataContent) - } - - if(somestring && somestring.data && typeof somestring.data.desktop !== 'undefined' && somestring.type === "imageObject") { - dataContent = somestring.data.desktop - Conversation.filterImageObject(dataContent) - } - - - if (msgType === "speak" && !plasmoid.expanded && appletSettings.innerset.notifybool == true) { - var post = somestring.data.utterance; - var title = "Mycroft's Reply:" - var notiftext = " "+ post; - PlasmaLa.Notify.mycroftResponse(title, notiftext); - } -} diff --git a/plasmoid/contents/ui/ConversationView.qml b/plasmoid/contents/ui/ConversationView.qml deleted file mode 100644 index 78abbb5..0000000 --- a/plasmoid/contents/ui/ConversationView.qml +++ /dev/null @@ -1,138 +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.components 3.0 as PlasmaComponents3 -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.private.mycroftplasmoid 1.0 as PlasmaLa -import QtQuick.Window 2.0 -import QtGraphicalEffects 1.0 - - -Item { - anchors.fill: parent - property alias conversationModel: convoLmodel - property alias conversationListView: inputlistView - property alias conversationViewScrollBar: conversationListScrollBar - - 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]); - mycroftConversationComponent.conversationModel.append({ - "itemType": "DropImg", - "InputQuery": durl - }) - inputlistView.positionViewAtEnd(); - } - - if(ext === 'mp3'){ - console.log('mp3'); - } - } - } - - ListModel{ - id: convoLmodel - } - - Item { - id: messageBox - anchors.fill: parent - - ColumnLayout { - id: colconvo - anchors.fill: parent - - ListView { - id: inputlistView - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.rightMargin: units.gridUnit * 0.15 - verticalLayoutDirection: ListView.TopToBottom - spacing: 12 - clip: true - model: convoLmodel - ScrollBar.vertical: conversationListScrollBar - delegate: Component { - Loader { - source: switch(itemType) { - case "NonVisual": return "SimpleMessageDelegate.qml" - case "WebViewType": return "WebViewDelegate.qml" - case "CurrentWeather": return "CurrentWeatherDelegate.qml" - case "DropImg" : return "ImgRecogDelegate.qml" - case "AskType" : return "AskMessageDelegate.qml" - case "LoaderType" : return "LoaderDelagate.qml" - case "PlacesType" : return "PlacesDelegate.qml" - case "RecipeType" : return "RecipeDelegate.qml" - case "DashboardType" : return "DashboardType.qml" - case "AudioFileType" : return "AudioFileDelegate.qml" - case "VideoFileType" : return "VideoFileDelegate.qml" - case "DocumentFileType" : return "DocumentFileDelegate.qml" - case "FallBackType" : return "FallbackWebSearchDelegte.qml" - case "StackObjType" : return "StackObjDelegate.qml" - case "BookType" : return "BookDelegate.qml" - case "WikiType" : return "WikiDelegate.qml" - case "YelpType" : return "YelpDelegate.qml" - case "ImageType" : return "ImageDelegate.qml" - } - property var metacontent : dataContent - } - } - - onCountChanged: { - inputlistView.positionViewAtEnd(); - } - } - - PlasmaComponents3.ScrollBar { - id: conversationListScrollBar - orientation: Qt.Vertical - interactive: true - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - } - } - } - } -} 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/CurrentWeatherDelegate.qml b/plasmoid/contents/ui/CurrentWeatherDelegate.qml deleted file mode 100644 index de12877..0000000 --- a/plasmoid/contents/ui/CurrentWeatherDelegate.qml +++ /dev/null @@ -1,133 +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: cbwidthmargin - height: weathbgImg.height - color: theme.backgroundColor - - Image{ - id: weathbgImg - width: cbwidthmargin - 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("thunderstorm") !== -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: currentWeatherFrame - anchors.fill: parent - - Rectangle { - id: currentWeatherFrameBg - anchors.fill: parent - 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) - } - - Coloumn { - id: currentWeatherMainArea - spacing: 2 - - anchors.top: parent.top - anchors.bottom: currentWeatherExtendedAreaSeptr.top - Image{ - id: currentWeatherCurrentTempIcon - - Component.onCompleted:{ - var currentWeatherCondition = getCurrentConditionIcon(ssum) - currentWeatherMainArea.source = currentWeatherCurrentTempIcon - } - } - } - Text { - id: weatherCurrentLabel - 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 = "Current Temperature: " + scttemp - } - } - } - } - } - } - } -} diff --git a/plasmoid/contents/ui/CustomIndicator.qml b/plasmoid/contents/ui/CustomIndicator.qml deleted file mode 100644 index 0426d7d..0000000 --- a/plasmoid/contents/ui/CustomIndicator.qml +++ /dev/null @@ -1,306 +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.kirigami 2.5 as Kirigami - -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: Kirigami.Units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: Kirigami.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: Kirigami.Units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: Kirigami.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: Kirigami.Units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: Kirigami.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: Kirigami.Units.gridUnit * 1.185 } - PropertyAction { target: myRot; property: "origin.y"; value: Kirigami.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: Kirigami.Units.gridUnit * 4.5 - implicitHeight: Kirigami.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: Kirigami.Units.gridUnit * 0.45 - height: Kirigami.Units.gridUnit * 0.45 - } - } - - Rectangle { - id: innerCircleSurround - anchors.centerIn: parent - color: "#ffffff" - radius: 100 - implicitWidth: Kirigami.Units.gridUnit * 3 - implicitHeight: Kirigami.Units.gridUnit * 3 - opacity: 1 - } - - Rectangle { - id: innerCircleSurroundOutterRing - anchors.centerIn: parent - color: theme.linkColor - radius: 100 - implicitWidth: Kirigami.Units.gridUnit * 2.75 - implicitHeight: Kirigami.Units.gridUnit * 2.75 - opacity: 1 - } - - Rectangle { - id: maskItem - anchors.verticalCenter: parent.verticalCenter - anchors.left: innerCircleSurroundOutterRing.left - anchors.leftMargin: Kirigami.Units.gridUnit * 0.2 - color: "#00000000" - radius: 1000 - implicitWidth: Kirigami.Units.gridUnit * 1.25 - implicitHeight: Kirigami.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: Kirigami.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 d3bccd7..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.onSendMessage(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 e1eb83b..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: dashhdrvertSvg.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: "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.onSendMessage(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: "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: "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: "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/Dashboard.js b/plasmoid/contents/ui/Dashboard.js deleted file mode 100644 index 7cdd505..0000000 --- a/plasmoid/contents/ui/Dashboard.js +++ /dev/null @@ -1,109 +0,0 @@ - function checkDashStatus(){ - if(dashListModel.count == 0){ - Applet.checkConnectionStatus() - } - } - - function fetchDashNews(){ - var doc = new XMLHttpRequest() - var url = 'https://newsapi.org/v2/top-headlines?' + - 'country=' + globalcountrycode + '&' + - 'apiKey=' + appletSettings.innerset.newsCardAPIKey.text; - doc.open("GET", url, true); - doc.send(); - - doc.onreadystatechange = function() { - if (doc.readyState === XMLHttpRequest.DONE) { - var req = doc.responseText; - var checkNewsItem = JSON.parse(req) - if (checkNewsItem.totalResults == 0){ - globalcountrycode = "us" - fetchDashNews() - } - else { - dashLmodel.append({"iType": "DashNews", "iObj": req}) - } - } - } - } - - function fetchDashWeather(){ - var doc = new XMLHttpRequest() - var url = 'https://api.openweathermap.org/data/2.5/forecast?' + - 'lat=' + geoLat + '&lon=' + geoLong + '&units=' + weatherMetric + '&cnt=3' + - '&APPID=' + appletSettings.innerset.weatherCardAPIKey.text; - - doc.open("GET", url, true); - doc.send(); - - doc.onreadystatechange = function() { - if (doc.readyState === XMLHttpRequest.DONE) { - var req = doc.responseText; - dashLmodel.append({"iType": "DashWeather", "iObj": req}) - } - } - } - - function fetchDashCryptoCardData(){ - var doc = new XMLHttpRequest - var url = "https://min-api.cryptocompare.com/data/price?fsym=" + appletSettings.innerset.selectedCrypto + "&tsyms=" + appletSettings.innerset.selectedCur1 + "," + appletSettings.innerset.selectedCur2 + "," + appletSettings.innerset.selectedCur3 - doc.open("Get", url, true); - doc.send(); - - doc.onreadystatechange = function() { - if (doc.readyState === XMLHttpRequest.DONE) { - var req = doc.responseText; - dashLmodel.append({"iType": "DashCryptoPrice", "iObj": req}) - } - } - } - - function updateCardData(){ - tabBar.currentTab = mycroftTab - mycroftConversationComponent.conversationModel.clear() - showDash("setVisible") - } - - function setDisclaimer(){ - dashLmodel.append({"iType": "Disclaimer", "iObj": "none"}) - } - - function globalDashRun(){ - if(appletSettings.innerset.dashboardSetting == true){ - if(appletSettings.innerset.disclaimerCardSetting == true){ - setDisclaimer() - } - if(appletSettings.innerset.newsCardSetting == true){ - fetchDashNews() - } - if(appletSettings.innerset.weatherCardSetting == true){ - fetchDashWeather() - } - if(appletSettings.innerset.cryptoCardSetting == true){ - fetchDashCryptoCardData() - } - mycroftConversationComponent.conversationModel.append({"itemType": "DashboardType", "InputQuery": ""}) - } - else { - mycroftConversationComponent.conversationModel.clear() - if(mycroftStatusCheckSocket._socketIsAlreadyActive == true){ - disclaimbox.visible = false - } - else { - disclaimbox.visible = true - } - } - } - - function showDash(dashState){ - switch(dashState){ - case "setVisible": - dashLmodel.clear() - globalDashRun() - break - case "setHide": - dashLmodel.clear() - mycroftConversationComponent.conversationModel.clear() - break - } - } diff --git a/plasmoid/contents/ui/DashboardDelegate.qml b/plasmoid/contents/ui/DashboardDelegate.qml deleted file mode 100644 index 96f6455..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 - units.gridUnit * 0.12 - 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: dashscrollBar.left - anchors.rightMargin: units.gridUnit * 0.15 - height: cbheight / 1.05 - model: dashLmodel - spacing: 2 - focus: true - interactive: true - clip: true; - delegate: DashboardDelegate{} - ScrollBar.vertical: dashscrollBar - } - -PlasmaComponents3.ScrollBar { - id: dashscrollBar - //flickableItem: dashdelegatelview - 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/FallbackWebSearchDelegate.qml b/plasmoid/contents/ui/FallbackWebSearchDelegate.qml deleted file mode 100644 index d397696..0000000 --- a/plasmoid/contents/ui/FallbackWebSearchDelegate.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: model.itemData.fallbackUrl - 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..46edf58 --- /dev/null +++ b/plasmoid/contents/ui/FullRepresentation.qml @@ -0,0 +1,248 @@ +/* Copyright 2016 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 Mycroft 1.0 as Mycroft + +Item { + id: root + implicitWidth: Kirigami.Units.gridUnit * 20 + implicitHeight: Kirigami.Units.gridUnit * 32 + + function pushMessage(text, inbound) { + conversationModel.append({"text": text, + "inbound": inbound}); + + // Limit to 20 items in the histry as ListModel is quite heavy on memory + if (conversationModel.count > 20) { + conversationModel.remove(0) + } + + mainView.flick(0, -500); + } + + Component.onCompleted: { + pushMessage(i18n("How can I help you?"), true); + } + + 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: horlineSvg; + 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: "Conversation" + } + + PlasmaComponents.TabButton { + id: mycroftSkillsTab + iconSource: "games-hint" + text: "Hints & Tips" + } + + PlasmaComponents.TabButton { + id: mycroftMSMinstTab + iconSource: "kmouth-phresebook-new" + text: "Skill Browser" + } + } + + PlasmaCore.SvgItem { + Layout.fillWidth: true + Layout.preferredHeight: horlineSvg.elementSize("horizontal-line").height + + elementId: "horizontal-line" + svg: PlasmaCore.Svg { + id: horlineSvg2; + 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 + } + } + + Mycroft.SkillView { + id: skillView + Kirigami.Theme.colorSet: Kirigami.Theme.View + Layout.fillWidth: true + Layout.fillHeight: true + clip: true + onCurrentItemChanged: { + currentItem.background.visible = false + inputField.forceActiveFocus(); + } + + Connections { + id: mycroftConnection + + target: Mycroft.MycroftController + + onFallbackTextRecieved: { + pushMessage(data.utterance, true); + } + } + + initialItem: Controls.ScrollView { + Kirigami.Theme.colorSet: Kirigami.Theme.View + ListView { + id: mainView + + spacing: Kirigami.Units.largeSpacing + + topMargin: Math.max(0, height - contentHeight - Kirigami.Units.largeSpacing * 3) + bottomMargin: Kirigami.Units.largeSpacing + + //onContentHeightChanged: flick(0, 100); + //contentY = contentHeight - height - topMargin + bottomMargin; + + model: ListModel { + id: conversationModel + } + delegate: ConversationDelegate {} + } + } + } + } + + Item { + id: bottomBar + anchors.bottom: root.bottom + anchors.left: root.left + anchors.right: root.right + height: Kirigami.Units.gridUnit * 4 + + BottomBarViewComponent { + id: bottomBarView + } + } + + ColumnLayout { + anchors.centerIn: parent + opacity: Mycroft.MycroftController.status != Mycroft.MycroftController.Open + + Behavior on opacity { + OpacityAnimator { + duration: Kirigami.Units.longDuration + easing.type: Easing.InOutCubic + } + } + + Kirigami.Heading { + Layout.fillWidth: true + text: i18n("Mycroft not connected") + wrapMode: Text.WordWrap + } + Controls.Button { + Layout.alignment: Qt.AlignHCenter + text: i18n("Connect") + onClicked: { + Mycroft.MycroftController.start(); + } + } + } + + 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 + } + } + + Mycroft.StatusIndicator { + anchors.horizontalCenter: parent.horizontalCenter + y: skillView.currentItem == skillView.initialItem ? parent.height/2 - height/2 : parent.height - height - Kirigami.Units.largeSpacing + } +} diff --git a/plasmoid/contents/ui/SkillModel.qml b/plasmoid/contents/ui/HintsModel.qml similarity index 61% rename from plasmoid/contents/ui/SkillModel.qml rename to plasmoid/contents/ui/HintsModel.qml index 44b24b6..1284010 100644 --- a/plasmoid/contents/ui/SkillModel.qml +++ b/plasmoid/contents/ui/HintsModel.qml @@ -1,105 +1,105 @@ /* 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: 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..9c07d7a --- /dev/null +++ b/plasmoid/contents/ui/HintsView.qml @@ -0,0 +1,156 @@ +/* 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 +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft + +Rectangle { + id: tipscontent + height: Kirigami.Units.gridUnit * 5 + anchors.left: parent.left + anchors.right: parent.right + border.width: 1 + border.color: Qt.darker(theme.linkColor, 1.2) + color: Qt.darker(theme.backgroundColor, 1.2) + + RowLayout { + anchors.fill: parent + + Image { + id: innerskImg + source: Pic + Layout.preferredWidth: Kirigami.Units.gridUnit * 1.2 + Layout.preferredHeight: Kirigami.Units.gridUnit * 1.2 + Layout.alignment: Qt.AlignLeft + Layout.leftMargin: units.gridUnit * 0.25 + } + + PlasmaCore.SvgItem { + Layout.preferredWidth: lineskillpgSvg.elementSize("vertical-line").width + Layout.fillHeight: true + z: 110 + elementId: "vertical-line" + + svg: PlasmaCore.Svg { + id: lineskillpgSvg; + imagePath: "widgets/line" + } + } + + Item { + id: skilltipsinner + Layout.fillWidth: true + Layout.fillHeight: true + + ColumnLayout { + id: innerskillscolumn + anchors.fill: parent + + PlasmaComponents.Label { + id: innerskllname + Layout.fillWidth: true + wrapMode: Text.WordWrap; + font.bold: true; + text: i18n(Skill) + } + + PlasmaComponents.Label { + id: cmd0label + Layout.fillWidth: true + wrapMode: Text.WordWrap; + width: root.width; + text: i18n('Command: ' + 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.onSendMessagesendTextMessage(JSON.stringify(socketmessage)); + tabBar.currentTab = mycroftTab + qinput.text = ""; + } + } + } + + PlasmaComponents.Label { + id: cmd1label + Layout.fillWidth: true + wrapMode: Text.WordWrap; + width: root.width; + text: i18n('Command: ' + 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.onSendMessagesendTextMessage(JSON.stringify(socketmessage)); + tabBar.currentTab = mycroftTab + qinput.text = ""; + } + } + } + } + } + } +} + + diff --git a/plasmoid/contents/ui/HintsViewComponent.qml b/plasmoid/contents/ui/HintsViewComponent.qml new file mode 100644 index 0000000..529b218 --- /dev/null +++ b/plasmoid/contents/ui/HintsViewComponent.qml @@ -0,0 +1,29 @@ +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 + + ListView { + id: hintsListView + anchors.fill: parent + model: HintsModel{} + delegate: HintsView{} + spacing: 4 + focus: false + interactive: true + clip: true; + } +} diff --git a/plasmoid/contents/ui/ImgRecogDelegate.qml b/plasmoid/contents/ui/ImgRecogDelegate.qml deleted file mode 100644 index 89ffdfe..0000000 --- a/plasmoid/contents/ui/ImgRecogDelegate.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: "Broad Recognition" - - onClicked: { - var irecogmsgsend = innerset.customrecog - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [irecogmsgsend + " " + model.InputQuery]; - socket.onSendMessage(JSON.stringify(socketmessage)); - } - } - PlasmaComponents.Button { - id: ocrImageRecog - width: cbwidth / 2 - height: units.gridUnit * 2 - text: "OCR Recognition" - - onClicked: { - var irecogmsgsend = innerset.customocrrecog - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [irecogmsgsend + " " + model.InputQuery]; - socket.onSendMessage(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/LoaderDelegate.qml b/plasmoid/contents/ui/LoaderDelegate.qml deleted file mode 100644 index afc2b45..0000000 --- a/plasmoid/contents/ui/LoaderDelegate.qml +++ /dev/null @@ -1,69 +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 - -Item { - id: loaderRoot - width: cbwidth - height: parent.height - property string filename: "file:///" + model.itemData.loaderUrl - property int getHeight - - Component.onCompleted: { - var mObj = loaderComp.createObject(loaderView, {}) - } - - Item { - id: loaderItem - width: cbwidth - height: parent.height - - 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/MsmView.qml b/plasmoid/contents/ui/MsmView.qml index de4ca53..1f7345f 100644 --- a/plasmoid/contents/ui/MsmView.qml +++ b/plasmoid/contents/ui/MsmView.qml @@ -1,219 +1,213 @@ /* 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 -import Qt.labs.settings 1.0 Rectangle { - id: skillcontent - 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 - focus: false - - 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.onSendMessage(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.onSendMessage(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.onSendMessage(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.onSendMessage(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 - var defskillPath = (defaultFold || customFold) + "/" + "mycroft-" + model.name - configPath = (defaultFold || customFold) + "/" + model.name + "/" + "settingsmeta.json" - if(PlasmaLa.FileReader.file_exists_local(skillPath)){ - installUpdateLabl.text = "Installed" - //updateskillviamsm.enabled = true - } - else if(PlasmaLa.FileReader.file_exists_local(defskillPath)){ - installUpdateLabl.text = "Installed" - } -// if(PlasmaLa.FileReader.file_exists_local(configPath)){ -// configureSkillLabl.enabled = true -// } - } - - PlasmaLa.MsmApp{ - id: launchinstaller - } - - Component.onCompleted: { - getSkillInfoLocal(); - } - - 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) - } - } + id: skillcontent + 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 + focus: false - 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 - } - } - } - Rectangle { - id: getskillviamsmRect - width: parent.width - height: units.gridUnit * 1 - anchors.bottom: parent.bottom - color: Qt.darker(theme.linkColor, 1.2) +// 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.onSendMessage(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.onSendMessage(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.onSendMessage(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.onSendMessage(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 +// var defskillPath = (defaultFold || customFold) + "/" + "mycroft-" + model.name +// configPath = (defaultFold || customFold) + "/" + model.name + "/" + "settingsmeta.json" +// if(PlasmaLa.FileReader.file_exists_local(skillPath)){ +// installUpdateLabl.text = "Installed" +// //updateskillviamsm.enabled = true +// } +// else if(PlasmaLa.FileReader.file_exists_local(defskillPath)){ +// installUpdateLabl.text = "Installed" +// } +// // if(PlasmaLa.FileReader.file_exists_local(configPath)){ +// // configureSkillLabl.enabled = true +// // } +// } - PlasmaComponents.Button{ - id: installUpdateLabl - width: parent.width - height: parent.height - anchors.left: parent.left - text: "Install" - - onClicked:{ - switch(installUpdateLabl.text){ - case "Install": - var msmprogress = exec() - break - case "Uninstall": - var msmprogress = execUninstall() - break - } - } - } +// Component.onCompleted: { + //getSkillInfoLocal(); +// } + + 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) + } + } + + 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 + } + } + } + Rectangle { + id: getskillviamsmRect + width: parent.width + height: units.gridUnit * 1 + anchors.bottom: parent.bottom + color: Qt.darker(theme.linkColor, 1.2) + + PlasmaComponents.Button{ + id: installUpdateLabl + width: parent.width + height: parent.height + anchors.left: parent.left + text: "Install" + + onClicked:{ + switch(installUpdateLabl.text){ + case "Install": + var msmprogress = exec() + break + case "Uninstall": + var msmprogress = execUninstall() + break } } - + } + } +} + diff --git a/plasmoid/contents/ui/NavigationComponentView.qml b/plasmoid/contents/ui/NavigationComponentView.qml deleted file mode 100644 index 6f3cdfd..0000000 --- a/plasmoid/contents/ui/NavigationComponentView.qml +++ /dev/null @@ -1,83 +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 - -Item { - id: navigationComponentView - property alias routeLModel: routeListModel - property alias navMapDrawer: navigationMapDrawer - -ListModel { - id: routeListModel -} - -Drawer { - id: navigationMapDrawer - 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: routeListModel - 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/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 - -Item { - id: placesMainDelegate - width: cbwidth - height: nearbyDelegateItm.height - - 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" - } - } - - 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: model.itemData.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: "Address: " + model.itemData.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 = model.itemData.placeposition.replace(/[[\]]/g,'').split(","); - getRouteInformation(model.itemData.placelocallat, model.itemData.placelocallong, navpos[0], navpos[1], model.itemData.placeappid, model.itemData.placeappcode) - var formatedurl = "https://image.maps.cit.api.here.com/mia/1.6/mapview?c=" + model.itemData.placelocallat + "," + model.itemData.placelocallong + "&z=16&poi=" + navpos[0] + "," + navpos[1] + "&poithm=0&app_id=" + model.itemData.placeappid + "&app_code=" + model.itemData.placeappcode + "&h=" + cbheight / 2 + "&w=" + cbwidth + "&ppi=500ppi=120&t=7&f=2&i=true" - navComponentView.navMapDrawer.open() - navComponentView.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: model.itemData.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/PulleyItem.qml b/plasmoid/contents/ui/PulleyItem.qml deleted file mode 100644 index 9637262..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.onSendMessage(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 c59edca..0000000 --- a/plasmoid/contents/ui/RecipeDelegate.qml +++ /dev/null @@ -1,170 +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 - -Item { - id: recipesMainDelegate - width: cbwidth - height: recipeDelegateItm.height - -RecipeExtraComponentView{ - id: recipesExtraView -} - -Column { - id: contentFrameColumn - anchors.fill: parent - -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: model.itemData.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: model.itemData.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: "Calories: " + model.itemData.recipeCalories +" cal" - } - - 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: "Diet Type: " + model.itemData.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: "Health Tags: " + model.itemData.recipeHealthTags - } - } - - PlasmaComponents.Button { - id: recipeViewBtn - anchors.right: parent.right - width: units.gridUnit * 6; - height: units.gridUnit * 4; - text: "View Recipe" - - onClicked: { - recipesExtraView.recipeReadLmodel.clear() - recipesExtraView.recipeReadDrawer.open() - recipesExtraView.recipeReadDrawer.recipeReadDrawerHeader = "" + model.itemData.recipeLabel.replace(/["']/g, "") + "" - var readRecipeLines = recipeIngredientLines.split(",") - for(var i = 0; i < readRecipeLines.length; i++){ - recipeReadLmodel.append({ingredients: model.itemData.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: "Recipe Source: " + model.itemData.recipeSource + "" - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - - Text { - color: theme.textColor ; - font.pixelSize: 10 - text: "Powered By: Edamam.com" - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - } - } - } - } -} diff --git a/plasmoid/contents/ui/RecipeExtraComponentView.qml b/plasmoid/contents/ui/RecipeExtraComponentView.qml deleted file mode 100644 index 8856cc0..0000000 --- a/plasmoid/contents/ui/RecipeExtraComponentView.qml +++ /dev/null @@ -1,145 +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 - -Item { - id: recipeReadMain - property alias recipeReadLVModel: recipeReadListView.model - property alias recipeReadDrawer: recipeContentsDrawer - - 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() - } - } - } - } - -Drawer { - id: recipeContentsDrawer - 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/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/SettingsComponent.qml b/plasmoid/contents/ui/SettingsComponent.qml deleted file mode 100644 index 4772abd..0000000 --- a/plasmoid/contents/ui/SettingsComponent.qml +++ /dev/null @@ -1,492 +0,0 @@ -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 QtQuick.Window 2.0 -import QtGraphicalEffects 1.0 -import "Applet.js" as Applet -import "Autocomplete.js" as Autocomplete -import "Conversation.js" as Conversation -import "Dashboard.js" as Dash - -Item { - id: settingsComponent - anchors.fill: parent - property alias innerset: appletConfiguration - property alias dasboardSwitch: dashswitch - - 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: "General" - } - - PlasmaComponents.TabButton { - id: dashSettingsTab - text: "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 - Dash.showDash("setVisible") - } - else if(!dashswitch.checked){ - mycroftConversationComponent.conversationModel.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: "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: "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: "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: "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" - Dash.updateCardData() - } - } - PlasmaComponents.Button{ - id: owmApiKeyMetricFar - text: i18n("Fahrenheit") - onClicked: { - weatherMetric = "imperial" - Dash.updateCardData() - } - } - } - - } - } - } - - Settings { - id: appletConfiguration - 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: newsApiKeyTextFld.text - property alias weatherCardSetting: weathercardswitch.checked - property alias weatherCardAPIKey: owmApiKeyTextFld.text - property alias weatherMetricC: owmApiKeyMetricCel.checked - property alias weatherMetricF: owmApiKeyMetricFar.checked -// property alias versionIndex: versionBox.currentIndex -// property alias versionUrl: versionBox.versionInfo - property alias cryptoCardSetting: cryptocardswitch.checked - 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 - } -} diff --git a/plasmoid/contents/ui/SimpleMessageDelegate.qml b/plasmoid/contents/ui/SimpleMessageDelegate.qml deleted file mode 100644 index d9650f2..0000000 --- a/plasmoid/contents/ui/SimpleMessageDelegate.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.itemData.queryData - 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 624210a..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: i18n(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: ' + 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.onSendMessagesendTextMessage(JSON.stringify(socketmessage)); - tabBar.currentTab = mycroftTab - qinput.text = ""; - } - } - } - - PlasmaComponents.Label { - id: cmd1label - wrapMode: Text.WordWrap; - width: main.width; - text: i18n('Command: ' + 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.onSendMessagesendTextMessage(JSON.stringify(socketmessage)); - tabBar.currentTab = mycroftTab - qinput.text = ""; - } - } - } - } - } - } - - diff --git a/plasmoid/contents/ui/SkillsInstallerComponent.qml b/plasmoid/contents/ui/SkillsInstallerComponent.qml index 5a47ce5..86cfe37 100644 --- a/plasmoid/contents/ui/SkillsInstallerComponent.qml +++ b/plasmoid/contents/ui/SkillsInstallerComponent.qml @@ -1,179 +1,148 @@ 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 QtQuick.Window 2.0 import QtGraphicalEffects 1.0 -import "Applet.js" as Applet -import "Autocomplete.js" as Autocomplete -import "Conversation.js" as Conversation -import "Dashboard.js" as Dash +import org.kde.kirigami 2.5 as Kirigami +import Mycroft 1.0 as Mycroft -Item { +Rectangle { id: skillsInstallerComponent - anchors.fill:parent - property alias skillInstallerConfig: skillInstallerSettings + 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(); - } - } + } + + 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]); } - - 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]); - } - } + 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; - } - - Settings { - id: skillInstallerSettings - property alias versionIndex: versionBox.currentIndex - property alias versionUrl: versionBox.versionInfo + } + } + + 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; } } diff --git a/plasmoid/contents/ui/SkillsTipViewComponent.qml b/plasmoid/contents/ui/SkillsTipViewComponent.qml deleted file mode 100644 index d806889..0000000 --- a/plasmoid/contents/ui/SkillsTipViewComponent.qml +++ /dev/null @@ -1,39 +0,0 @@ -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 QtQuick.Window 2.0 -import QtGraphicalEffects 1.0 -import "Applet.js" as Applet -import "Autocomplete.js" as Autocomplete -import "Conversation.js" as Conversation -import "Dashboard.js" as Dash - -Item { - id: skillTipsPage - anchors.fill: parent - - 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; - } - -} 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/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 index 80910b4..3ad1c6e 100644 --- a/plasmoid/contents/ui/Suggestions.qml +++ b/plasmoid/contents/ui/Suggestions.qml @@ -1,241 +1,225 @@ /* 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 -import "Dashboard.js" as Dash Rectangle { id: suggestionsmainitem color: theme.backgroundColor anchors.fill: parent property alias suggest1: suggestiontext1.text property alias suggest2: suggestiontext2.text property alias suggest3: suggestiontext3.text - + signal emitAsk + signal emitStop + signal emitClear + 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 + id: suggest1imageicon + anchors.left: parent.left + 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 + suggestionbutton1.color = theme.textColor + suggestiontext1.color = theme.backgroundColor } onExited: { - suggestionbutton1.color = theme.backgroundColor - suggestiontext1.color = theme.textColor + 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.onSendMessage(JSON.stringify(socketmessage)); + suggestionsmainitem.emitAsk() } } - PlasmaComponents.Label { + 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 + id: suggest2imageicon + anchors.left: parent.left + 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 + suggestionbutton2.color = theme.textColor + suggestiontext2.color = theme.backgroundColor } onExited: { - suggestionbutton2.color = theme.backgroundColor - suggestiontext2.color = theme.textColor + suggestionbutton2.color = theme.backgroundColor + suggestiontext2.color = theme.textColor } onClicked: { - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = ["stop"]; - socket.onSendMessage(JSON.stringify(socketmessage)); + suggestionsmainitem.emitStop() } } 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 + id: suggest3imageicon + anchors.left: parent.left + 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 + suggestionbutton3.color = theme.textColor + suggestiontext3.color = theme.backgroundColor } onExited: { - suggestionbutton3.color = theme.backgroundColor - suggestiontext3.color = theme.textColor + suggestionbutton3.color = theme.backgroundColor + suggestiontext3.color = theme.textColor } onClicked: { - mycroftConversationComponent.conversationModel.clear() - if(appletSettings.dasboardSwitch.checked == true && dashLmodel.count == 0){ - Dash.showDash("setVisible") - } + suggestionsmainitem.emitClear() } } - PlasmaComponents.Label { + 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/TopBarAnim.qml b/plasmoid/contents/ui/TopBarAnim.qml index 00b878f..0f6ecc3 100644 --- a/plasmoid/contents/ui/TopBarAnim.qml +++ b/plasmoid/contents/ui/TopBarAnim.qml @@ -1,247 +1,167 @@ /* 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 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 index 017e009..5a5d742 100644 --- a/plasmoid/contents/ui/TopBarViewComponent.qml +++ b/plasmoid/contents/ui/TopBarViewComponent.qml @@ -1,238 +1,129 @@ /* 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.Controls 2.2 as Controls 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 QtQuick.Window 2.0 +import org.kde.kirigami 2.5 as Kirigami import QtGraphicalEffects 1.0 -import "Applet.js" as Applet -import "Autocomplete.js" as Autocomplete -import "Conversation.js" as Conversation -import "Dashboard.js" as Dash +import Mycroft 1.0 as Mycroft Item { id: topBarBGrect - anchors.fill: parent - z: 101 - property alias mycroftStatus: statusId property alias talkAnimation: midbarAnim - property alias startSwitch: mycroftstartservicebutton - property alias retryButton: statusRetryBtn property alias micIcon: qinputmicbx.iconSource - function animateTalk(){ - midbarAnim.wsistalking() + Connections { + target: Mycroft.MycroftController + onSpeakingChanged: { + if (Mycroft.MycroftController.speaking){ + midbarAnim.startTalking() + } + else { + midbarAnim.stopTalking() + } + } + onListeningChanged: { + if (Mycroft.MycroftController.listening){ + midbarAnim.startTalking() + } + else { + midbarAnim.stopTalking() + } + } } - - Image { - id: barAnim - anchors.left: parent.left - anchors.leftMargin: units.gridUnit * 0.1 - anchors.verticalCenter: parent.verticalCenter + + 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" - width: units.gridUnit * 1.4 - height: units.gridUnit * 1.5 } - ColorOverlay { - anchors.fill: barAnim - source: barAnim - color: theme.linkColor - } - - PlasmaComponents.Label { - anchors.top: parent.top - anchors.topMargin: 4 - anchors.left: barAnim.right - anchors.leftMargin: units.gridUnit * 0.25 - font.capitalization: Font.SmallCaps - id: logotextId - text: i18n("Mycroft") - font.bold: false; - color: theme.textColor - } - - PlasmaCore.SvgItem { - id: topbarLeftDividerline - anchors { - left: logotextId.right - leftMargin: units.gridUnit * 0.34 - top: parent.top - topMargin: 0 - bottom: parent.bottom - bottomMargin: 0 + 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 } - width: linetopleftvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" - - svg: PlasmaCore.Svg { - id: linetopleftvertSvg; - imagePath: "widgets/line" - } - } + PlasmaCore.SvgItem { + id: topbarLeftDividerline + Layout.fillHeight: true + Layout.preferredWidth: linetopleftvertSvg.elementSize("vertical-line").width + elementId: "vertical-line" - PlasmaComponents.Label { - anchors.top: parent.top - anchors.topMargin: 4 - anchors.left: topbarLeftDividerline.right - anchors.leftMargin: units.gridUnit * 0.25 - font.capitalization: Font.SmallCaps - id: statusId - text: i18n("Disabled") - font.bold: false; - color: theme.textColor - } - - PlasmaComponents.Button { - id: statusRetryBtn - anchors.top: parent.top - anchors.topMargin: 1 - anchors.left: statusId.right - anchors.leftMargin: units.gridUnit * 0.50 - anchors.bottom: parent.bottom - anchors.bottomMargin: units.gridUnit * 0.25 - text: i18n("Reconnect") - width: units.gridUnit * 6 - visible: false - focus: false - enabled: false - - onClicked: { - socket.active = false - socket.active = true - if (socket.active = false){ - mycroftConversationComponent.conversationModel.append({"itemType": "NonVisual", "InputQuery": socket.errorString}) + svg: PlasmaCore.Svg { + id: linetopleftvertSvg; + imagePath: "widgets/line" } } - } - -TopBarAnim { - id: midbarAnim - anchors.verticalCenter: parent.verticalCenter - anchors.left: statusId.left - anchors.right: topbarDividerline.left - height: units.gridUnit * 4 - z: 6 -} - - PlasmaCore.SvgItem { - id: topbarDividerline - anchors { - right: mycroftstartservicebutton.left - rightMargin: units.gridUnit * 0.25 - top: parent.top - topMargin: 0 - bottom: parent.bottom - bottomMargin: 0 + + TopBarAnim { + id: midbarAnim + Layout.fillWidth: true + Layout.preferredHeight: Kirigami.Units.gridUnit * 2 - Kirigami.Units.largeSpacing * 2 + Layout.topMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing } - width: linetopvertSvg.elementSize("vertical-line").width - z: 110 - elementId: "vertical-line" + 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" - } - } - - - SwitchButton { - anchors.right: qinputmicbx.left - anchors.verticalCenter: topBarBGrect.verticalCenter - id: mycroftstartservicebutton - checked: false - width: Math.round(units.gridUnit * 2) - height: width - z: 102 - - onClicked: { - if (mycroftstartservicebutton.checked === false) { - statusRetryBtn.visible = false - statusRetryBtn.enabled = false - PlasmaLa.LaunchApp.runCommand("bash", coreinstallstoppath); - mycroftConversationComponent.conversationModel.clear() - bottomBarView.suggestBox.visible = true; - socket.active = false; - midbarAnim.showstatsId() - Dash.showDash("setVisible") - } - - if (mycroftstartservicebutton.checked === true) { - disclaimbox.visible = false; - PlasmaLa.LaunchApp.runCommand("bash", coreinstallstartpath); - if(appletSettings.innerset.dashboardSetting == "false"){ - mycroftConversationComponent.conversationModel.clear() - } - bottomBarView.suggestBox.visible = true; - statusId.color = theme.linkColor - statusId.text = i18n("Starting up..please wait") - statusId.visible = true - delay(15000, function() { - socket.active = true; - }) - } - } + svg: PlasmaCore.Svg { + id: linetopvertSvg; + imagePath: "widgets/line" } - + } + PlasmaComponents.ToolButton { - id: qinputmicbx - anchors.right: pinButton.left - anchors.verticalCenter: parent.verticalCenter - iconSource: "mic-on" - tooltip: i18n("Toggle Mic") - flat: true - width: Math.round(units.gridUnit * 2) - height: width - z: 102 - - onClicked: { - if (qinputmicbx.iconSource == "mic-on") { - Applet.muteMicrophone() - } - else if (qinputmicbx.iconSource == "mic-off") { - Applet.unmuteMicrophone() - } - } + 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 - anchors.right: parent.right - anchors.verticalCenter: topBarBGrect.verticalCenter - width: Math.round(units.gridUnit * 1.5) - height: width - checkable: true - iconSource: "window-pin" - onCheckedChanged: plasmoid.hideOnWindowDeactivate = !checked - z: 102 + + 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/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/YelpDelegate.qml b/plasmoid/contents/ui/YelpDelegate.qml deleted file mode 100644 index 113a983..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: "Phone: " + 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: "Location: " + 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: "Rating: " + model.rating + " Stars" - } - } - - PlasmaComponents.Button { - id: yelpViewBtn - anchors.top: parent.top - anchors.right: parent.right - width: units.gridUnit * 6; - height: units.gridUnit * 2.5; - text: "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: "Send As Text" - onClicked: { - var sendmsgUtterance = "send info" - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = [sendmsgUtterance]; - socket.onSendMessage(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: "Powered By: Yelp.com" - anchors.right: parent.right - anchors.rightMargin: units.gridUnit * 0.25 - anchors.verticalCenter: parent.verticalCenter - } - } - } - } diff --git a/plasmoid/contents/ui/main.qml b/plasmoid/contents/ui/main.qml index f526339..b7be73c 100644 --- a/plasmoid/contents/ui/main.qml +++ b/plasmoid/contents/ui/main.qml @@ -1,427 +1,34 @@ -/* Copyright 2016 Aditya Mehra +/* Copyright 2016 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 QtQuick.Window 2.0 -import QtGraphicalEffects 1.0 -import "Applet.js" as Applet -import "Autocomplete.js" as Autocomplete -import "Conversation.js" as Conversation -import "ConversationLogic.js" as ConversationLogic -import "Dashboard.js" as Dash - -Item { - id: main - Layout.fillWidth: true; - Plasmoid.toolTipMainText: i18n("Mycroft") - Plasmoid.switchWidth: units.gridUnit * 15 - Plasmoid.switchHeight: units.gridUnit * 15 - Layout.minimumWidth: units.gridUnit * 26 - - Component.onCompleted: { - mycroftStatusCheckSocket.active = true - Applet.detectInstallType(); - Applet.refreshAllSkills(); - } - - property var skillList: [] - property alias cbwidth: conversationViewFrameBox.width - property var cbwidthmargin: conversationViewFrameBox.width - units.gridUnit * 0.25 - property alias cbheight: conversationViewFrameBox.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 textInput: bottomBarView.queryInput - property alias dashLmodel: dashListModel - 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) { - Dash.checkDashStatus() - } - } - } - - Connections { - target: PlasmaLa.Notify - onNotificationStopSpeech: { - var socketmessage = {}; - socketmessage.type = "recognizer_loop:utterance"; - socketmessage.data = {}; - socketmessage.data.utterances = ["stop"]; - socket.onSendMessage(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.onSendMessage(JSON.stringify(socketmessage)); - } - } - - PlasmaCore.DataSource { - id: geoDataSource - dataEngine: "geolocation" - - onSourceAdded: { - connectSource(source) - } - - onNewData: { - mycroftConversationComponent.conversationModel.clear() - if (sourceName == "location"){ - geoLat = data.latitude - geoLong = data.longitude - var globalcountry = data.country - globalcountrycode = globalcountry.substring(0, 2) - Dash.showDash("setVisible") - } - } - } - -ListModel { - id: dashListModel - } - -Timer { - id: timer - } -function delay(delayTime, cb) { - timer.interval = delayTime; - timer.repeat = false; - timer.triggered.connect(cb); - timer.start(); -} - -Item { - id: topBar - Layout.fillWidth: true - height: units.gridUnit * 2 - z: 101 - anchors { - top: main.top - topMargin: -1 - left: main.left - leftMargin: -1 - right: main.right - rightMargin: -1 - } - - TopBarViewComponent { - id: topBarView - } -} - -PlasmaCore.SvgItem { - anchors { - left: main.left - right: main.right - top: root.top - } - width: 1 - height: horlinetopbarSvg.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: horlinetopbarSvg; - imagePath: "widgets/line" - } -} - Item { - id: root - anchors { - top: topBar.bottom - bottom: rectanglebottombar.top - left: parent.left - right: parent.right - } - - //WebSocket { - // id: mycroftStatusCheckSocket - // url: appletSettings.innerset.wsurl - // active: true - // property bool _socketIsAlreadyActive: false - //onStatusChanged: Applet.preSocketStatus() - // } - - PlasmaLa.WSocket { - id: socket - onMessageReceived: { - var somestring = JSON.parse(message) - var msgType = somestring.type; - Applet.playwaitanim(msgType); - ConversationLogic.filterConversation(msgType, somestring) - topBarView.animateTalk() - } - onSocketStatusChanged: { - Applet.mainSocketStatus() - } - } - - 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 + id: root - Item { - id: conversationViewFrameBox - anchors.top: mycroftcolumntab.top - anchors.topMargin:15 - anchors.left: mycroftcolumntab.left - anchors.right: mycroftcolumntab.right - anchors.bottom: mycroftcolumntab.bottom - - Disclaimer{ - id: disclaimbox - visible: false - } + Plasmoid.switchWidth: Kirigami.Units.gridUnit * 10 + Plasmoid.switchHeight: Kirigami.Units.gridUnit * 12 - ConversationView{ - id: mycroftConversationComponent - anchors.fill: parent - } - } - } - - 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 - - SkillsTipViewComponent { - id: skillTipsView - } - } - - 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 - - SettingsComponent{ - id: appletSettings - } - } - - 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 - - SkillsInstallerComponent{ - id: skillsInstallerView - } - } -} - - PlasmaCore.SvgItem { - anchors { - left: main.left - right: main.right - bottom: root.bottom - } - width: 1 - height: horlineSvg.elementSize("horizontal-line").height - - 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 - - BottomBarViewComponent { - id: bottomBarView - } - } + Plasmoid.fullRepresentation: FullRepresentation {} } diff --git a/plugin/CMakeLists.txt b/plugin/CMakeLists.txt deleted file mode 100644 index baeeb23..0000000 --- a/plugin/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -kde_enable_exceptions() - -set(mycroftplasmoidplugin_SRCS mycroftplasmoidplugin.cpp launchapp.cpp notify.cpp filereader.cpp msmapp.cpp connectioncheck.cpp mycroftplasmoid_dbus.cpp wsocket.cpp) - -add_library(mycroftplasmoidplugin SHARED ${mycroftplasmoidplugin_SRCS}) - -target_link_libraries(mycroftplasmoidplugin Qt5::Gui Qt5::Core Qt5::Qml Qt5::DBus Qt5::Network Qt5::WebSockets 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/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 deleted file mode 100644 index 2dd4984..0000000 --- a/plugin/mycroftPlasmoid.notifyrc +++ /dev/null @@ -1,66 +0,0 @@ -[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[en_GB]=Mycroft Plasmoid -Comment[es]=Plasmoide Mycroft -Comment[fi]=Mycroft-sovelma -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[sk]=Mycroft Plazmoid -Comment[sv]=Mycroft Plasmoid -Comment[uk]=Плазмоїд Mycroft -Comment[x-test]=xxMycroft Plasmoidxx - -[Event/MycroftResponse] -Name=Mycroft Response -Name[ca]=Resposta del Mycroft -Name[ca@valencia]=Resposta del Mycroft -Name[de]=Mycroft-Rückmeldung -Name[en_GB]=Mycroft Response -Name[es]=Respuesta de Mycroft -Name[fi]=Mycroftin vastaus -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[sk]=Odpoveď Mycroft -Name[sv]=Mycroft svar -Name[uk]=Відповідь Mycroft -Name[x-test]=xxMycroft Responsexx -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[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]=连接设备失败 -Icon=mycroft-plasma-appicon -Action=Popup diff --git a/plugin/mycroftplasmoid_dbus.cpp b/plugin/mycroftplasmoid_dbus.cpp deleted file mode 100644 index b99193b..0000000 --- a/plugin/mycroftplasmoid_dbus.cpp +++ /dev/null @@ -1,89 +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 "mycroftplasmoid_dbus.h" -#include "mycroftplasmoidplugin.h" -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Implementation of adaptor class MycroftDbusAdapterInterface - */ - -MycroftDbusAdapterInterface::MycroftDbusAdapterInterface(QObject *parent) - : QDBusAbstractAdaptor(parent) -{ - // constructor - QDBusConnection dbus = QDBusConnection::sessionBus(); - dbus.registerObject("/mycroftapplet", this, QDBusConnection::ExportScriptableSlots | QDBusConnection::ExportNonScriptableSlots); - dbus.registerService("org.kde.mycroftapplet"); - setAutoRelaySignals(true); -} - -MycroftDbusAdapterInterface::~MycroftDbusAdapterInterface() -{ - // destructor -} - -void MycroftDbusAdapterInterface::showMycroft() -{ - // handle method call org.kde.mycroft.showMycroft - emit sendShowMycroft("Show"); - QMetaObject::invokeMethod(this, "getMethod", Qt::DirectConnection, Q_ARG(QString, "Show")); -} - -void MycroftDbusAdapterInterface::showSkills() -{ - // handle method call org.kde.mycroft.showSkills - emit sendShowSkills("ShowSkills"); - QMetaObject::invokeMethod(this, "getMethod", Qt::DirectConnection, Q_ARG(QString, "ShowSkills")); -} - -void MycroftDbusAdapterInterface::showSkillsInstaller() -{ - // handle method call org.kde.mycroft.showSkillsInstaller - emit installList("ShowInstallSkills"); - QMetaObject::invokeMethod(this, "getMethod", Qt::DirectConnection, Q_ARG(QString, "ShowInstallSkills")); -} - -void MycroftDbusAdapterInterface::showRecipeMethod(const QString &recipeName) -{ - // handle method call org.kde.mycroft.showRecipeMethod - emit recipeMethod(recipeName); - QMetaObject::invokeMethod(this, "getMethod", Qt::DirectConnection, Q_ARG(QString, recipeName)); -} - -void MycroftDbusAdapterInterface::sendKioMethod(const QString &kioString) -{ - // handle method call org.kde.mycroft.showRecipeMethod - emit kioMethod(kioString); - QMetaObject::invokeMethod(this, "getMethod", Qt::DirectConnection, Q_ARG(QString, kioString)); -} - -Q_INVOKABLE QString MycroftDbusAdapterInterface::getMethod(const QString &method) -{ - QString str = method; - return str; -} - diff --git a/plugin/mycroftplasmoid_dbus.h b/plugin/mycroftplasmoid_dbus.h deleted file mode 100644 index 8e13512..0000000 --- a/plugin/mycroftplasmoid_dbus.h +++ /dev/null @@ -1,88 +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 MYCROFTPLASMOID_DBUS_H -#define MYCROFTPLASMOID_DBUS_H - -#include -#include -QT_BEGIN_NAMESPACE -class QByteArray; -template class QList; -template class QMap; -class QString; -class QStringList; -class QVariant; -QT_END_NAMESPACE - -/* - * Adaptor class for interface org.kde.mycroftapplet - */ -class MycroftDbusAdapterInterface: public QDBusAbstractAdaptor -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "org.kde.mycroftapplet") - Q_CLASSINFO("D-Bus Introspection", "" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" - "") -public: - MycroftDbusAdapterInterface(QObject *parent); - virtual ~MycroftDbusAdapterInterface(); - Q_INVOKABLE QString getMethod(const QString &method); - -public: // PROPERTIES -public Q_SLOTS: // METHODS - void showMycroft(); - void showSkills(); - void showSkillsInstaller(); - void showRecipeMethod(const QString &recipeName); - void sendKioMethod(const QString &kioString); -Q_SIGNALS: // SIGNALS - void sendShowMycroft(const QString &msgShowMycroft); - void sendShowSkills(const QString &msgShowSkills); - void installList(const QString &msgShowInstallSkills); - void recipeMethod(const QString &msgRecipeMethod); - void kioMethod(const QString &msgKioMethod); -}; - -#endif diff --git a/plugin/mycroftplasmoidplugin.cpp b/plugin/mycroftplasmoidplugin.cpp deleted file mode 100644 index dd1c69c..0000000 --- a/plugin/mycroftplasmoidplugin.cpp +++ /dev/null @@ -1,79 +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 "mycroftplasmoidplugin.h" -#include "mycroftplasmoid_dbus.h" -#include "launchapp.h" -#include "notify.h" -#include "filereader.h" -#include "msmapp.h" -#include "connectioncheck.h" -#include "wsocket.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, "WSocket"); - 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); -} diff --git a/plugin/mycroftplasmoidplugin.h b/plugin/mycroftplasmoidplugin.h deleted file mode 100644 index 332fddd..0000000 --- a/plugin/mycroftplasmoidplugin.h +++ /dev/null @@ -1,40 +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 PROTOTYPEPLASMOIDPLUGIN_H -#define PROTOTYPEPLASMOIDPLUGIN_H - -#include -#include -#include - -class QQmlEngine; - -class MycroftPlasmoidPlugin : public QQmlExtensionPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") - -public: - void registerTypes(const char *uri); - void initializeEngine(QQmlEngine *engine, const char *uri) override; - -Q_SIGNAL -}; - -#endif // PROTOTYPEPLASMOIDPLUGIN_H diff --git a/plugin/notify.cpp b/plugin/notify.cpp deleted file mode 100644 index ce9482a..0000000 --- a/plugin/notify.cpp +++ /dev/null @@ -1,59 +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 "notify.h" -#include -#include -#include - -Notify::Notify(QObject *parent) - : QObject(parent) -{ -} - -void Notify::mycroftResponse(const QString &title, const QString ¬iftext) -{ - KNotification *notification = new KNotification(QStringLiteral("MycroftResponse"), - KNotification::CloseOnTimeout, this); - notification->setComponentName(QStringLiteral("mycroftPlasmoid")); - notification->setTitle(title); - notification->setText(notiftext); - notification->setActions(QStringList() << i18n("Stop") << i18n("Show Response")); - connect(notification, &KNotification::action1Activated, this, &Notify::notificationStopSpeech); - connect(notification, &KNotification::action2Activated, this, &Notify::notificationShowResponse); - notification->sendEvent(); -} - -void Notify::mycroftConnectionStatus(const QString &connectionStatus) -{ - KNotification *notification = new KNotification(QStringLiteral("MycroftConnectionStatus"), - KNotification::CloseOnTimeout, this); - notification->setComponentName(QStringLiteral("mycroftPlasmoid")); - notification->setTitle(i18n("Mycroft")); - notification->setText(connectionStatus); - if(connectionStatus == QStringLiteral("Connected")){ - notification->setIconName("mycroft-appicon-connected"); - } - else if(connectionStatus == QStringLiteral("Disconnected")){ - notification->setIconName("mycroft-appicon-disconnected"); - } - else { - notification->setIconName("mycroft-plasma-appicon"); - } - notification->sendEvent(); -} diff --git a/plugin/notify.h b/plugin/notify.h deleted file mode 100644 index 4348656..0000000 --- a/plugin/notify.h +++ /dev/null @@ -1,40 +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 NOTIFY_H -#define NOTIFY_H - -#include -#include - -class Notify : public QObject -{ - Q_OBJECT - -public: - explicit Notify(QObject *parent = Q_NULLPTR); - -public Q_SLOTS: - void mycroftResponse(const QString &title, const QString ¬iftext); - void mycroftConnectionStatus(const QString &connectionStatus); -Q_SIGNALS: // SIGNALS - void notificationStopSpeech(); - void notificationShowResponse(); -}; - -#endif // NOTIFY_H diff --git a/plugin/qmldir b/plugin/qmldir deleted file mode 100644 index 662f827..0000000 --- a/plugin/qmldir +++ /dev/null @@ -1,3 +0,0 @@ -module org.kde.private.mycroftplasmoid - -plugin mycroftplasmoidplugin diff --git a/plugin/wsocket.cpp b/plugin/wsocket.cpp deleted file mode 100644 index 3b0a8a8..0000000 --- a/plugin/wsocket.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include "wsocket.h" -#include -#include -#include -#include - -WSocket::WSocket(QObject *parent) : QObject(parent) -{ - connect(&m_webSocket, &QWebSocket::connected, this, &WSocket::onConnected); - connect(&m_webSocket, &QWebSocket::disconnected, this, &WSocket::closed); - connect(&m_webSocket, &QWebSocket::stateChanged, this, &WSocket::onStatusChanged); -} - -void WSocket::open(const QUrl &url){ - qDebug() << "Websocket-Open"; - m_webSocket.open(QUrl(url)); - qDebug() << this; -} - -void WSocket::onConnected() -{ - connect(&m_webSocket, &QWebSocket::textMessageReceived, this, &WSocket::onTextMessageReceived); -} - -void WSocket::onTextMessageReceived(QString message) -{ - emit messageReceived(message); -} - -void WSocket::onSendMessage(QString message) -{ - qDebug() << message; - m_webSocket.sendTextMessage(message); -} - -void WSocket::onStatusChanged(QAbstractSocket::SocketState state) -{ - qDebug() << "Debug:Emit"; - emit socketStatusChanged(status()); -} - -WSocket::Status WSocket::status(){ - switch(m_webSocket.state()) - { - case QAbstractSocket::ConnectingState: - case QAbstractSocket::BoundState: - case QAbstractSocket::HostLookupState: - { - qDebug() << "Debug:Connecting"; - return Connecting; - break; - } - case QAbstractSocket::UnconnectedState: - { - qDebug() << "Debug:Closed"; - return Closed; - break; - } - case QAbstractSocket::ConnectedState: - { - qDebug() << "Debug:Open"; - return Open; - break; - } - case QAbstractSocket::ClosingState: - { - qDebug() << "Debug:Closing"; - return Closing; - break; - } - default: - { - qDebug() << "Debug:ConnectingDefault"; - return Connecting; - break; - } - } -} diff --git a/plugin/wsocket.h b/plugin/wsocket.h deleted file mode 100644 index 8777e7b..0000000 --- a/plugin/wsocket.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef WSOCKETS_H -#define WSOCKETS_H - -#include -#include - -class WSocket : public QObject -{ - Q_OBJECT - Q_PROPERTY(Status status READ status NOTIFY socketStatusChanged) - Q_ENUMS(Status) -public: - enum Status { - Connecting, - Open, - Closing, - Closed, - Error - }; - explicit WSocket(QObject *parent = nullptr); -signals: - void messageReceived(QString message); - void socketStatusChanged(Status); - void closed(); -public slots: - void open(const QUrl &url); - void onConnected(); - void onTextMessageReceived(QString message); - void onSendMessage(QString message); - void onStatusChanged(QAbstractSocket::SocketState state); - Status status(); -private: - QWebSocket m_webSocket; - QUrl m_url; -}; - -#endif // WSOCKETS_H