You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nheko/resources/qml/dialogs/PhoneNumberInputDialog.qml

1742 lines
41 KiB

// SPDX-FileCopyrightText: Nheko Contributors
//
// SPDX-License-Identifier: GPL-3.0-or-later
import ".."
import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.3
import im.nheko 1.0
ApplicationWindow {
id: inputDialog
property alias prompt: promptLabel.text
property alias echoMode: statusInput.echoMode
property var onAccepted: undefined
modality: Qt.NonModal
flags: Qt.Dialog
width: 350
height: fontMetrics.lineSpacing * 7
GridLayout {
rowSpacing: Nheko.paddingMedium
columnSpacing: Nheko.paddingMedium
anchors.margins: Nheko.paddingMedium
anchors.fill: parent
columns: 2
Label {
id: promptLabel
Layout.columnSpan: 2
color: palette.text
}
ComboBox {
id: numberPrefix
editable: false
delegate: ItemDelegate {
text: n + " (" + p + ")"
}
// taken from https://gitlab.com/whisperfish/whisperfish/-/blob/master/qml/js/countries.js
//n=name,i=ISO,p=prefix -- see countries.js.md for source
model: ListModel {
ListElement {
n: "Afghanistan"
i: "AF"
p: "+93"
}
ListElement {
n: "Åland Islands"
i: "AX"
p: "+358 18"
}
ListElement {
n: "Albania"
i: "AL"
p: "+355"
}
ListElement {
n: "Algeria"
i: "DZ"
p: "+213"
}
ListElement {
n: "American Samoa"
i: "AS"
p: "+1 684"
}
ListElement {
n: "Andorra"
i: "AD"
p: "+376"
}
ListElement {
n: "Angola"
i: "AO"
p: "+244"
}
ListElement {
n: "Anguilla"
i: "AI"
p: "+1 264"
}
ListElement {
n: "Antigua and Barbuda"
i: "AG"
p: "+1 268"
}
ListElement {
n: "Argentina"
i: "AR"
p: "+54"
}
ListElement {
n: "Armenia"
i: "AM"
p: "+374"
}
ListElement {
n: "Aruba"
i: "AW"
p: "+297"
}
ListElement {
n: "Ascension"
i: "SH"
p: "+247"
}
ListElement {
n: "Australia"
i: "AU"
p: "+61"
}
ListElement {
n: "Australian Antarctic Territory"
i: "AQ"
p: "+672 1"
}
//ListElement{n:"Australian External Territories";i:"";p:"+672"} // NO ISO
ListElement {
n: "Austria"
i: "AT"
p: "+43"
}
ListElement {
n: "Azerbaijan"
i: "AZ"
p: "+994"
}
ListElement {
n: "Bahamas"
i: "BS"
p: "+1 242"
}
ListElement {
n: "Bahrain"
i: "BH"
p: "+973"
}
ListElement {
n: "Bangladesh"
i: "BD"
p: "+880"
}
ListElement {
n: "Barbados"
i: "BB"
p: "+1 246"
}
ListElement {
n: "Barbuda"
i: "AG"
p: "+1 268"
}
ListElement {
n: "Belarus"
i: "BY"
p: "+375"
}
ListElement {
n: "Belgium"
i: "BE"
p: "+32"
}
ListElement {
n: "Belize"
i: "BZ"
p: "+501"
}
ListElement {
n: "Benin"
i: "BJ"
p: "+229"
}
ListElement {
n: "Bermuda"
i: "BM"
p: "+1 441"
}
ListElement {
n: "Bhutan"
i: "BT"
p: "+975"
}
ListElement {
n: "Bolivia"
i: "BO"
p: "+591"
}
ListElement {
n: "Bonaire"
i: "BQ"
p: "+599 7"
}
ListElement {
n: "Bosnia and Herzegovina"
i: "BA"
p: "+387"
}
ListElement {
n: "Botswana"
i: "BW"
p: "+267"
}
ListElement {
n: "Brazil"
i: "BR"
p: "+55"
}
ListElement {
n: "British Indian Ocean Territory"
i: "IO"
p: "+246"
}
ListElement {
n: "Brunei Darussalam"
i: "BN"
p: "+673"
}
ListElement {
n: "Bulgaria"
i: "BG"
p: "+359"
}
ListElement {
n: "Burkina Faso"
i: "BF"
p: "+226"
}
ListElement {
n: "Burundi"
i: "BI"
p: "+257"
}
ListElement {
n: "Cambodia"
i: "KH"
p: "+855"
}
ListElement {
n: "Cameroon"
i: "CM"
p: "+237"
}
ListElement {
n: "Canada"
i: "CA"
p: "+1"
}
ListElement {
n: "Cape Verde"
i: "CV"
p: "+238"
}
//ListElement{n:"Caribbean Netherlands";i:"";p:"+599 3"} // NO ISO
//ListElement{n:"Caribbean Netherlands";i:"";p:"+599 4"} // NO ISO
//ListElement{n:"Caribbean Netherlands";i:"";p:"+599 7"} // NO ISO
ListElement {
n: "Cayman Islands"
i: "KY"
p: "+1 345"
}
ListElement {
n: "Central African Republic"
i: "CF"
p: "+236"
}
ListElement {
n: "Chad"
i: "TD"
p: "+235"
}
ListElement {
n: "Chatham Island (New Zealand)"
i: "NZ"
p: "+64"
}
ListElement {
n: "Chile"
i: "CL"
p: "+56"
}
ListElement {
n: "China"
i: "CN"
p: "+86"
}
ListElement {
n: "Christmas Island"
i: "CX"
p: "+61 89164"
}
ListElement {
n: "Cocos (Keeling) Islands"
i: "CC"
p: "+61 89162"
}
ListElement {
n: "Colombia"
i: "CO"
p: "+57"
}
ListElement {
n: "Comoros"
i: "KM"
p: "+269"
}
ListElement {
n: "Congo (Democratic Republic of the)"
i: "CD"
p: "+243"
}
ListElement {
n: "Congo"
i: "CG"
p: "+242"
}
ListElement {
n: "Cook Islands"
i: "CK"
p: "+682"
}
ListElement {
n: "Costa Rica"
i: "CR"
p: "+506"
}
ListElement {
n: "Côte d'Ivoire"
i: "CI"
p: "+225"
}
ListElement {
n: "Croatia"
i: "HR"
p: "+385"
}
ListElement {
n: "Cuba"
i: "CU"
p: "+53"
}
ListElement {
n: "Curaçao"
i: "CW"
p: "+599 9"
}
ListElement {
n: "Cyprus"
i: "CY"
p: "+357"
}
ListElement {
n: "Czech Republic"
i: "CZ"
p: "+420"
}
ListElement {
n: "Denmark"
i: "DK"
p: "+45"
}
//ListElement{n:"Diego Garcia";i:"";p:"+246"} // NO ISO, OCC. BY GB
ListElement {
n: "Djibouti"
i: "DJ"
p: "+253"
}
ListElement {
n: "Dominica"
i: "DM"
p: "+1 767"
}
ListElement {
n: "Dominican Republic"
i: "DO"
p: "+1 809"
}
ListElement {
n: "Dominican Republic"
i: "DO"
p: "+1 829"
}
ListElement {
n: "Dominican Republic"
i: "DO"
p: "+1 849"
}
ListElement {
n: "Easter Island"
i: "CL"
p: "+56"
}
ListElement {
n: "Ecuador"
i: "EC"
p: "+593"
}
ListElement {
n: "Egypt"
i: "EG"
p: "+20"
}
ListElement {
n: "El Salvador"
i: "SV"
p: "+503"
}
ListElement {
n: "Equatorial Guinea"
i: "GQ"
p: "+240"
}
ListElement {
n: "Eritrea"
i: "ER"
p: "+291"
}
ListElement {
n: "Estonia"
i: "EE"
p: "+372"
}
ListElement {
n: "eSwatini"
i: "SZ"
p: "+268"
}
ListElement {
n: "Ethiopia"
i: "ET"
p: "+251"
}
ListElement {
n: "Falkland Islands (Malvinas)"
i: "FK"
p: "+500"
}
ListElement {
n: "Faroe Islands"
i: "FO"
p: "+298"
}
ListElement {
n: "Fiji"
i: "FJ"
p: "+679"
}
ListElement {
n: "Finland"
i: "FI"
p: "+358"
}
ListElement {
n: "France"
i: "FR"
p: "+33"
}
//ListElement{n:"French Antilles";i:"";p:"+596"} // NO ISO
ListElement {
n: "French Guiana"
i: "GF"
p: "+594"
}
ListElement {
n: "French Polynesia"
i: "PF"
p: "+689"
}
ListElement {
n: "Gabon"
i: "GA"
p: "+241"
}
ListElement {
n: "Gambia"
i: "GM"
p: "+220"
}
ListElement {
n: "Georgia"
i: "GE"
p: "+995"
}
ListElement {
n: "Germany"
i: "DE"
p: "+49"
}
ListElement {
n: "Ghana"
i: "GH"
p: "+233"
}
ListElement {
n: "Gibraltar"
i: "GI"
p: "+350"
}
ListElement {
n: "Greece"
i: "GR"
p: "+30"
}
ListElement {
n: "Greenland"
i: "GL"
p: "+299"
}
ListElement {
n: "Grenada"
i: "GD"
p: "+1 473"
}
ListElement {
n: "Guadeloupe"
i: "GP"
p: "+590"
}
ListElement {
n: "Guam"
i: "GU"
p: "+1 671"
}
ListElement {
n: "Guatemala"
i: "GT"
p: "+502"
}
ListElement {
n: "Guernsey"
i: "GG"
p: "+44 1481"
}
ListElement {
n: "Guernsey"
i: "GG"
p: "+44 7781"
}
ListElement {
n: "Guernsey"
i: "GG"
p: "+44 7839"
}
ListElement {
n: "Guernsey"
i: "GG"
p: "+44 7911"
}
ListElement {
n: "Guinea-Bissau"
i: "GW"
p: "+245"
}
ListElement {
n: "Guinea"
i: "GN"
p: "+224"
}
ListElement {
n: "Guyana"
i: "GY"
p: "+592"
}
ListElement {
n: "Haiti"
i: "HT"
p: "+509"
}
ListElement {
n: "Honduras"
i: "HN"
p: "+504"
}
ListElement {
n: "Hong Kong"
i: "HK"
p: "+852"
}
ListElement {
n: "Hungary"
i: "HU"
p: "+36"
}
ListElement {
n: "Iceland"
i: "IS"
p: "+354"
}
ListElement {
n: "India"
i: "IN"
p: "+91"
}
ListElement {
n: "Indonesia"
i: "ID"
p: "+62"
}
ListElement {
n: "Iran"
i: "IR"
p: "+98"
}
ListElement {
n: "Iraq"
i: "IQ"
p: "+964"
}
ListElement {
n: "Ireland"
i: "IE"
p: "+353"
}
ListElement {
n: "Isle of Man"
i: "IM"
p: "+44 1624"
}
ListElement {
n: "Isle of Man"
i: "IM"
p: "+44 7524"
}
ListElement {
n: "Isle of Man"
i: "IM"
p: "+44 7624"
}
ListElement {
n: "Isle of Man"
i: "IM"
p: "+44 7924"
}
ListElement {
n: "Israel"
i: "IL"
p: "+972"
}
ListElement {
n: "Italy"
i: "IT"
p: "+39"
}
ListElement {
n: "Jamaica"
i: "JM"
p: "+1 876"
}
ListElement {
n: "Jan Mayen"
i: "SJ"
p: "+47 79"
}
ListElement {
n: "Japan"
i: "JP"
p: "+81"
}
ListElement {
n: "Jersey"
i: "JE"
p: "+44 1534"
}
ListElement {
n: "Jordan"
i: "JO"
p: "+962"
}
ListElement {
n: "Kazakhstan"
i: "KZ"
p: "+7 6"
}
ListElement {
n: "Kazakhstan"
i: "KZ"
p: "+7 7"
}
ListElement {
n: "Kenya"
i: "KE"
p: "+254"
}
ListElement {
n: "Kiribati"
i: "KI"
p: "+686"
}
ListElement {
n: "Korea (North)"
i: "KP"
p: "+850"
}
ListElement {
n: "Korea (South)"
i: "KR"
p: "+82"
}
// TEMP. CODE
ListElement {
n: "Kosovo"
i: "XK"
p: "+383"
}
ListElement {
n: "Kuwait"
i: "KW"
p: "+965"
}
ListElement {
n: "Kyrgyzstan"
i: "KG"
p: "+996"
}
ListElement {
n: "Laos"
i: "LA"
p: "+856"
}
ListElement {
n: "Latvia"
i: "LV"
p: "+371"
}
ListElement {
n: "Lebanon"
i: "LB"
p: "+961"
}
ListElement {
n: "Lesotho"
i: "LS"
p: "+266"
}
ListElement {
n: "Liberia"
i: "LR"
p: "+231"
}
ListElement {
n: "Libya"
i: "LY"
p: "+218"
}
ListElement {
n: "Liechtenstein"
i: "LI"
p: "+423"
}
ListElement {
n: "Lithuania"
i: "LT"
p: "+370"
}
ListElement {
n: "Luxembourg"
i: "LU"
p: "+352"
}
ListElement {
n: "Macau (Macao)"
i: "MO"
p: "+853"
}
ListElement {
n: "Madagascar"
i: "MG"
p: "+261"
}
ListElement {
n: "Malawi"
i: "MW"
p: "+265"
}
ListElement {
n: "Malaysia"
i: "MY"
p: "+60"
}
ListElement {
n: "Maldives"
i: "MV"
p: "+960"
}
ListElement {
n: "Mali"
i: "ML"
p: "+223"
}
ListElement {
n: "Malta"
i: "MT"
p: "+356"
}
ListElement {
n: "Marshall Islands"
i: "MH"
p: "+692"
}
ListElement {
n: "Martinique"
i: "MQ"
p: "+596"
}
ListElement {
n: "Mauritania"
i: "MR"
p: "+222"
}
ListElement {
n: "Mauritius"
i: "MU"
p: "+230"
}
ListElement {
n: "Mayotte"
i: "YT"
p: "+262 269"
}
ListElement {
n: "Mayotte"
i: "YT"
p: "+262 639"
}
ListElement {
n: "Mexico"
i: "MX"
p: "+52"
}
ListElement {
n: "Micronesia (Federated States of)"
i: "FM"
p: "+691"
}
ListElement {
n: "Midway Island (USA)"
i: "US"
p: "+1 808"
}
ListElement {
n: "Moldova"
i: "MD"
p: "+373"
}
ListElement {
n: "Monaco"
i: "MC"
p: "+377"
}
ListElement {
n: "Mongolia"
i: "MN"
p: "+976"
}
ListElement {
n: "Montenegro"
i: "ME"
p: "+382"
}
ListElement {
n: "Montserrat"
i: "MS"
p: "+1 664"
}
ListElement {
n: "Morocco"
i: "MA"
p: "+212"
}
ListElement {
n: "Mozambique"
i: "MZ"
p: "+258"
}
ListElement {
n: "Myanmar"
i: "MM"
p: "+95"
}
// NO OWN ISO, DISPUTED
ListElement {
n: "Nagorno-Karabakh"
i: "AZ"
p: "+374 47"
}
// NO OWN ISO, DISPUTED
ListElement {
n: "Nagorno-Karabakh"
i: "AZ"
p: "+374 97"
}
ListElement {
n: "Namibia"
i: "NA"
p: "+264"
}
ListElement {
n: "Nauru"
i: "NR"
p: "+674"
}
ListElement {
n: "Nepal"
i: "NP"
p: "+977"
}
ListElement {
n: "Netherlands"
i: "NL"
p: "+31"
}
ListElement {
n: "Nevis"
i: "KN"
p: "+1 869"
}
ListElement {
n: "New Caledonia"
i: "NC"
p: "+687"
}
ListElement {
n: "New Zealand"
i: "NZ"
p: "+64"
}
ListElement {
n: "Nicaragua"
i: "NI"
p: "+505"
}
ListElement {
n: "Nigeria"
i: "NG"
p: "+234"
}
ListElement {
n: "Niger"
i: "NE"
p: "+227"
}
ListElement {
n: "Niue"
i: "NU"
p: "+683"
}
ListElement {
n: "Norfolk Island"
i: "NF"
p: "+672 3"
}
// OCC. BY TR
ListElement {
n: "Northern Cyprus"
i: "CY"
p: "+90 392"
}
ListElement {
n: "Northern Ireland"
i: "GB"
p: "+44 28"
}
ListElement {
n: "Northern Mariana Islands"
i: "MP"
p: "+1 670"
}
ListElement {
n: "North Macedonia"
i: "MK"
p: "+389"
}
ListElement {
n: "Norway"
i: "NO"
p: "+47"
}
ListElement {
n: "Oman"
i: "OM"
p: "+968"
}
ListElement {
n: "Pakistan"
i: "PK"
p: "+92"
}
ListElement {
n: "Palau"
i: "PW"
p: "+680"
}
ListElement {
n: "Palestine (State of)"
i: "PS"
p: "+970"
}
ListElement {
n: "Panama"
i: "PA"
p: "+507"
}
ListElement {
n: "Papua New Guinea"
i: "PG"
p: "+675"
}
ListElement {
n: "Paraguay"
i: "PY"
p: "+595"
}
ListElement {
n: "Peru"
i: "PE"
p: "+51"
}
ListElement {
n: "Philippines"
i: "PH"
p: "+63"
}
ListElement {
n: "Pitcairn Islands"
i: "PN"
p: "+64"
}
ListElement {
n: "Poland"
i: "PL"
p: "+48"
}
ListElement {
n: "Portugal"
i: "PT"
p: "+351"
}
ListElement {
n: "Puerto Rico"
i: "PR"
p: "+1 787"
}
ListElement {
n: "Puerto Rico"
i: "PR"
p: "+1 939"
}
ListElement {
n: "Qatar"
i: "QA"
p: "+974"
}
ListElement {
n: "Réunion"
i: "RE"
p: "+262"
}
ListElement {
n: "Romania"
i: "RO"
p: "+40"
}
ListElement {
n: "Russia"
i: "RU"
p: "+7"
}
ListElement {
n: "Rwanda"
i: "RW"
p: "+250"
}
ListElement {
n: "Saba"
i: "BQ"
p: "+599 4"
}
ListElement {
n: "Saint Barthélemy"
i: "BL"
p: "+590"
}
ListElement {
n: "Saint Helena"
i: "SH"
p: "+290"
}
ListElement {
n: "Saint Kitts and Nevis"
i: "KN"
p: "+1 869"
}
ListElement {
n: "Saint Lucia"
i: "LC"
p: "+1 758"
}
ListElement {
n: "Saint Martin (France)"
i: "MF"
p: "+590"
}
ListElement {
n: "Saint Pierre and Miquelon"
i: "PM"
p: "+508"
}
ListElement {
n: "Saint Vincent and the Grenadines"
i: "VC"
p: "+1 784"
}
ListElement {
n: "Samoa"
i: "WS"
p: "+685"
}
ListElement {
n: "San Marino"
i: "SM"
p: "+378"
}
ListElement {
n: "São Tomé and Príncipe"
i: "ST"
p: "+239"
}
ListElement {
n: "Saudi Arabia"
i: "SA"
p: "+966"
}
ListElement {
n: "Senegal"
i: "SN"
p: "+221"
}
ListElement {
n: "Serbia"
i: "RS"
p: "+381"
}
ListElement {
n: "Seychelles"
i: "SC"
p: "+248"
}
ListElement {
n: "Sierra Leone"
i: "SL"
p: "+232"
}
ListElement {
n: "Singapore"
i: "SG"
p: "+65"
}
ListElement {
n: "Sint Eustatius"
i: "BQ"
p: "+599 3"
}
ListElement {
n: "Sint Maarten (Netherlands)"
i: "SX"
p: "+1 721"
}
ListElement {
n: "Slovakia"
i: "SK"
p: "+421"
}
ListElement {
n: "Slovenia"
i: "SI"
p: "+386"
}
ListElement {
n: "Solomon Islands"
i: "SB"
p: "+677"
}
ListElement {
n: "Somalia"
i: "SO"
p: "+252"
}
ListElement {
n: "South Africa"
i: "ZA"
p: "+27"
}
ListElement {
n: "South Georgia and the South Sandwich Islands"
i: "GS"
p: "+500"
}
// NO OWN ISO, DISPUTED
ListElement {
n: "South Ossetia"
i: "GE"
p: "+995 34"
}
ListElement {
n: "South Sudan"
i: "SS"
p: "+211"
}
ListElement {
n: "Spain"
i: "ES"
p: "+34"
}
ListElement {
n: "Sri Lanka"
i: "LK"
p: "+94"
}
ListElement {
n: "Sudan"
i: "SD"
p: "+249"
}
ListElement {
n: "Suriname"
i: "SR"
p: "+597"
}
ListElement {
n: "Svalbard"
i: "SJ"
p: "+47 79"
}
ListElement {
n: "Sweden"
i: "SE"
p: "+46"
}
ListElement {
n: "Switzerland"
i: "CH"
p: "+41"
}
ListElement {
n: "Syria"
i: "SY"
p: "+963"
}
ListElement {
n: "Taiwan"
i: "SJ"
p: "+886"
}
ListElement {
n: "Tajikistan"
i: "TJ"
p: "+992"
}
ListElement {
n: "Tanzania"
i: "TZ"
p: "+255"
}
ListElement {
n: "Thailand"
i: "TH"
p: "+66"
}
ListElement {
n: "Timor-Leste"
i: "TL"
p: "+670"
}
ListElement {
n: "Togo"
i: "TG"
p: "+228"
}
ListElement {
n: "Tokelau"
i: "TK"
p: "+690"
}
ListElement {
n: "Tonga"
i: "TO"
p: "+676"
}
ListElement {
n: "Transnistria"
i: "MD"
p: "+373 2"
}
ListElement {
n: "Transnistria"
i: "MD"
p: "+373 5"
}
ListElement {
n: "Trinidad and Tobago"
i: "TT"
p: "+1 868"
}
ListElement {
n: "Tristan da Cunha"
i: "SH"
p: "+290 8"
}
ListElement {
n: "Tunisia"
i: "TN"
p: "+216"
}
ListElement {
n: "Turkey"
i: "TR"
p: "+90"
}
ListElement {
n: "Turkmenistan"
i: "TM"
p: "+993"
}
ListElement {
n: "Turks and Caicos Islands"
i: "TC"
p: "+1 649"
}
ListElement {
n: "Tuvalu"
i: "TV"
p: "+688"
}
ListElement {
n: "Uganda"
i: "UG"
p: "+256"
}
ListElement {
n: "Ukraine"
i: "UA"
p: "+380"
}
ListElement {
n: "United Arab Emirates"
i: "AE"
p: "+971"
}
ListElement {
n: "United Kingdom"
i: "GB"
p: "+44"
}
ListElement {
n: "United States"
i: "US"
p: "+1"
}
ListElement {
n: "Uruguay"
i: "UY"
p: "+598"
}
ListElement {
n: "Uzbekistan"
i: "UZ"
p: "+998"
}
ListElement {
n: "Vanuatu"
i: "VU"
p: "+678"
}
ListElement {
n: "Vatican City State (Holy See)"
i: "VA"
p: "+379"
}
ListElement {
n: "Vatican City State (Holy See)"
i: "VA"
p: "+39 06 698"
}
ListElement {
n: "Venezuela"
i: "VE"
p: "+58"
}
ListElement {
n: "Vietnam"
i: "VN"
p: "+84"
}
ListElement {
n: "Virgin Islands (British)"
i: "VG"
p: "+1 284"
}
ListElement {
n: "Virgin Islands (US)"
i: "VI"
p: "+1 340"
}
ListElement {
n: "Wake Island (USA)"
i: "US"
p: "+1 808"
}
ListElement {
n: "Wallis and Futuna"
i: "WF"
p: "+681"
}
ListElement {
n: "Yemen"
i: "YE"
p: "+967"
}
ListElement {
n: "Zambia"
i: "ZM"
p: "+260"
}
// NO OWN ISO, DISPUTED?
ListElement {
n: "Zanzibar"
i: "TZ"
p: "+255 24"
}
ListElement {
n: "Zimbabwe"
i: "ZW"
p: "+263"
}
}
}
MatrixTextField {
id: statusInput
Layout.fillWidth: true
}
}
footer: DialogButtonBox {
standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel
onAccepted: {
if (inputDialog.onAccepted)
inputDialog.onAccepted(numberPrefix.model.get(numberPrefix.currentIndex).i, statusInput.text);
inputDialog.close();
}
onRejected: {
inputDialog.close();
}
}
}