// SPDX-FileCopyrightText: 2021 Mirian Margiani // SPDX-FileCopyrightText: 2021 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 Component.onCompleted: Nheko.reparent(inputDialog) width: 350 height: fontMetrics.lineSpacing * 7 GridLayout { rowSpacing: Nheko.paddingMedium columnSpacing: Nheko.paddingMedium anchors.margins: Nheko.paddingMedium anchors.fill: parent columns: 2 Label { Layout.columnSpan: 2 id: promptLabel color: Nheko.colors.text } ComboBox { id: numberPrefix editable: false delegate: ItemDelegate { text: n + " ("+ p +")" } // taken from https://gitlab.com/whisperfish/whisperfish/-/blob/master/qml/js/countries.js model: ListModel{//n=name,i=ISO,p=prefix -- see countries.js.md for source 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"} ListElement{n:"Kosovo";i:"XK";p:"+383"} // TEMP. CODE 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"} ListElement{n:"Nagorno-Karabakh";i:"AZ";p:"+374 47"} // NO OWN ISO, DISPUTED ListElement{n:"Nagorno-Karabakh";i:"AZ";p:"+374 97"} // NO OWN ISO, DISPUTED 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"} ListElement{n:"Northern Cyprus";i:"CY";p:"+90 392"} // OCC. BY TR 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"} ListElement{n:"South Ossetia";i:"GE";p:"+995 34"} // NO OWN ISO, DISPUTED 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"} ListElement{n:"Zanzibar";i:"TZ";p:"+255 24"} // NO OWN ISO, DISPUTED? 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(); } } }