├── .dockerignore ├── .github ├── qt_helper.py ├── verify_p2pool.py └── workflows │ ├── build.yml │ ├── flatpak.yml │ └── verify_p2pool.yml ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── DEPLOY.md ├── Dockerfile.android ├── Dockerfile.linux ├── Dockerfile.windows ├── LICENSE ├── LeftPanel.qml ├── Makefile ├── MiddlePanel.qml ├── README.md ├── cmake ├── 32-bit-toolchain.cmake ├── 64-bit-toolchain.cmake ├── CheckLinkerFlag.c ├── CheckLinkerFlag.cmake ├── Deploy.cmake └── VersionGui.cmake ├── components ├── AdvancedOptionsItem.qml ├── CMakeLists.txt ├── CheckBox.qml ├── CheckBox2.qml ├── ContextMenu.qml ├── ContextMenuItem.qml ├── DaemonManagerDialog.qml ├── DatePicker.qml ├── DevicePassphraseDialog.qml ├── Dialog.qml ├── IconButton.qml ├── InlineButton.qml ├── Input.qml ├── InputDialog.qml ├── InputMulti.qml ├── Label.qml ├── LabelButton.qml ├── LabelSubheader.qml ├── LanguageButton.qml ├── LanguageSidebar.qml ├── LineEdit.qml ├── LineEditMulti.qml ├── MenuBar.qml ├── MenuButton.qml ├── MenuButtonDivider.qml ├── Navbar.qml ├── NavbarItem.qml ├── NetworkStatusItem.qml ├── PasswordDialog.qml ├── ProcessingSplash.qml ├── ProgressBar.qml ├── QRCodeScanner.qml ├── RadioButton.qml ├── RemoteNodeDialog.qml ├── RemoteNodeEdit.qml ├── RemoteNodeList.qml ├── SettingsListItem.qml ├── Slider.qml ├── StandardButton.qml ├── StandardDialog.qml ├── StandardDropdown.qml ├── Style.qml ├── SuccessfulTxDialog.qml ├── TextBlock.qml ├── TextPlain.qml ├── TextPlainArea.qml ├── TipItem.qml ├── TitleBar.qml ├── Tooltip.qml ├── TxConfirmationDialog.qml ├── UpdateDialog.qml ├── WarningBox.qml ├── effects │ ├── ColorTransition.qml │ ├── GradientBackground.qml │ └── ImageMask.qml └── qmldir ├── external └── CMakeLists.txt ├── fonts ├── CMakeLists.txt ├── FontAwesome │ ├── FontAwesome.qml │ ├── Object.qml │ ├── fa-brands-400.otf │ ├── fa-regular-400.otf │ ├── fa-solid-900.otf │ └── qmldir ├── LICENSE.txt ├── Roboto-Bold.ttf ├── Roboto-Light.ttf ├── Roboto-Medium.ttf ├── Roboto-Regular.ttf ├── RobotoMono-Bold.ttf ├── RobotoMono-Light.ttf ├── RobotoMono-Medium.ttf └── RobotoMono-Regular.ttf ├── images ├── CMakeLists.txt ├── appicon.icns ├── appicon.ico ├── appicons │ ├── 128x128.png │ ├── 16x16.png │ ├── 24x24.png │ ├── 256x256.png │ ├── 32x32.png │ ├── 48x48.png │ ├── 64x64.png │ └── 96x96.png ├── arrow-right-in-circle-outline-medium-white.svg ├── arrow-right-in-circle.png ├── arrow-right-in-circle@2x.png ├── arrow-right-medium-white.png ├── arrow-right-medium-white@2x.png ├── busy-indicator.png ├── busy-indicator@2x.png ├── card-background-black0.png ├── card-background-black0@2x.png ├── card-background-black1.png ├── card-background-black1@2x.png ├── card-background-black2.png ├── card-background-black2@2x.png ├── card-background-black3.png ├── card-background-black3@2x.png ├── card-background-black4.png ├── card-background-black4@2x.png ├── card-background-black5.png ├── card-background-black5@2x.png ├── card-background-black6.png ├── card-background-black6@2x.png ├── card-background-black7.png ├── card-background-black7@2x.png ├── card-background-white.png ├── card-background-white@2x.png ├── check-white.svg ├── close.svg ├── copy.svg ├── create-wallet.png ├── create-wallet@2x.png ├── edit.svg ├── fullscreen.svg ├── historyBorderRadius.png ├── ledgerNanoS.png ├── ledgerNanoSPlus.png ├── ledgerNanoX.png ├── ledgerStax.png ├── lightning-white.png ├── lightning-white@2x.png ├── lightning.png ├── lightning@2x.png ├── local-node-full.png ├── local-node-full@2x.png ├── local-node.png ├── local-node@2x.png ├── logout.png ├── logout@2x.png ├── menuButtonGradient.png ├── merchant │ ├── arrow_right.png │ ├── bg.png │ └── input_box.png ├── middlePanelShadow.png ├── minimize.svg ├── miningxmr.png ├── miningxmr@2x.png ├── monero-vector.svg ├── moneroIcon-28x28.png ├── moneroIcon-28x28@2x.png ├── moneroLogo_white.png ├── nextPage.png ├── nextPage@2x.png ├── open-wallet-from-file-mainnet.png ├── open-wallet-from-file-mainnet@2x.png ├── open-wallet-from-file-stagenet.png ├── open-wallet-from-file-stagenet@2x.png ├── open-wallet-from-file-testnet.png ├── open-wallet-from-file-testnet@2x.png ├── open-wallet-from-file-trezor.png ├── open-wallet-from-file-trezor@2x.png ├── open-wallet-from-file-view-only.png ├── open-wallet-from-file-view-only@2x.png ├── open-wallet-from-file.png ├── open-wallet-from-file@2x.png ├── prevMonth.png ├── prevMonth@2x.png ├── remote-node.png ├── remote-node@2x.png ├── resize.png ├── resize@2x.png ├── resizeHovered.png ├── resizeHovered@2x.png ├── restore-wallet-from-hardware.png ├── restore-wallet-from-hardware@2x.png ├── restore-wallet.png ├── restore-wallet@2x.png ├── right.svg ├── rightArrow.png ├── rightArrow@2x.png ├── success.png ├── success@2x.png ├── tails-grey.png ├── themes │ └── white │ │ ├── Monero-Logo.svg │ │ ├── close.svg │ │ ├── fullscreen.svg │ │ ├── leftPanelBg.jpg │ │ ├── middlePanelBg.jpg │ │ ├── minimize.svg │ │ ├── titlebarLogo.png │ │ └── titlebarLogo@2x.png ├── tip.png ├── titlebarLogo.png ├── titlebarLogo@2x.png ├── trezor3.png ├── trezor5.png ├── trezorT.png ├── trezorT@2x.png ├── uncheckedIcon.png ├── uncheckedIcon@2x.png ├── verify-white.png ├── verify-white@2x.png ├── verify.png ├── verify@2x.png ├── warning.png ├── warning@2x.png ├── whatIsIcon.png ├── whatIsIcon@2x.png ├── whiteDropIndicator.png ├── whiteDropIndicator@2x.png ├── world-flags-globe.png ├── write-down-white.png ├── write-down-white@2x.png ├── write-down.png └── write-down@2x.png ├── installers └── windows │ ├── .gitignore │ ├── Deterministic.md │ ├── FinishImage.bmp │ ├── LICENSE │ ├── Monero.iss │ ├── README.md │ ├── ReadMe.htm │ ├── WelcomeImage.bmp │ ├── WizardSmallImage.bmp │ └── monero-daemon.bat ├── js ├── CMakeLists.txt ├── TxUtils.js ├── Utils.js ├── Windows.js └── Wizard.js ├── lang ├── flags │ ├── bd.png │ ├── bg.png │ ├── br.png │ ├── catalonia.png │ ├── cn.png │ ├── cz.png │ ├── de.png │ ├── dk.png │ ├── eg.png │ ├── el.png │ ├── eo.png │ ├── es.png │ ├── fi.png │ ├── fr.png │ ├── gb.png │ ├── hr.png │ ├── hu.png │ ├── id.png │ ├── il.png │ ├── in.png │ ├── ir.png │ ├── irl.png │ ├── is.png │ ├── it.png │ ├── jp.png │ ├── kr.png │ ├── ku.png │ ├── lt.png │ ├── nb_NO.png │ ├── nl.png │ ├── pk.png │ ├── pl.png │ ├── ps.png │ ├── pt.png │ ├── ro.png │ ├── rs.png │ ├── ru.png │ ├── se.png │ ├── si.png │ ├── sk.png │ ├── tr.png │ ├── tw.png │ ├── ua.png │ ├── us.png │ ├── vi.png │ └── za.png └── languages.xml ├── main.qml ├── pages ├── Account.qml ├── AddressBook.qml ├── Advanced.qml ├── CMakeLists.txt ├── History.qml ├── Keys.qml ├── Mining.qml ├── Receive.qml ├── SharedRingDB.qml ├── Sign.qml ├── Transfer.qml ├── TxKey.qml ├── merchant │ ├── Merchant.qml │ ├── MerchantCheckbox.qml │ ├── MerchantTitlebar.qml │ └── MerchantTrackingList.qml └── settings │ ├── Settings.qml │ ├── SettingsInfo.qml │ ├── SettingsLayout.qml │ ├── SettingsLog.qml │ ├── SettingsNode.qml │ └── SettingsWallet.qml ├── qml.qrc ├── qtquickcontrols2.conf ├── share ├── Info.plist ├── org.getmonero.Monero.desktop ├── org.getmonero.Monero.metainfo.xml └── org.getmonero.Monero.yaml ├── src ├── CMakeLists.txt ├── NetworkType.h ├── QR-Code-scanner │ ├── CMakeLists.txt │ ├── Decoder.cpp │ ├── Decoder.h │ ├── QrCodeScanner.cpp │ ├── QrCodeScanner.h │ ├── QrScanThread.cpp │ └── QrScanThread.h ├── TranslationManager.cpp ├── TranslationManager.h ├── daemon │ ├── DaemonManager.cpp │ └── DaemonManager.h ├── libwalletqt │ ├── AddressBook.cpp │ ├── AddressBook.h │ ├── PassphraseHelper.cpp │ ├── PassphraseHelper.h │ ├── PendingTransaction.cpp │ ├── PendingTransaction.h │ ├── QRCodeImageProvider.cpp │ ├── QRCodeImageProvider.h │ ├── Subaddress.cpp │ ├── Subaddress.h │ ├── SubaddressAccount.cpp │ ├── SubaddressAccount.h │ ├── TransactionHistory.cpp │ ├── TransactionHistory.h │ ├── TransactionInfo.cpp │ ├── TransactionInfo.h │ ├── Transfer.h │ ├── UnsignedTransaction.cpp │ ├── UnsignedTransaction.h │ ├── Wallet.cpp │ ├── Wallet.h │ ├── WalletListenerImpl.cpp │ ├── WalletListenerImpl.h │ ├── WalletManager.cpp │ └── WalletManager.h ├── main │ ├── Logger.cpp │ ├── Logger.h │ ├── MainApp.cpp │ ├── MainApp.h │ ├── clipboardAdapter.cpp │ ├── clipboardAdapter.h │ ├── filter.cpp │ ├── filter.h │ ├── main.cpp │ ├── oscursor.cpp │ ├── oscursor.h │ ├── oshelper.cpp │ └── oshelper.h ├── model │ ├── AddressBookModel.cpp │ ├── AddressBookModel.h │ ├── SubaddressAccountModel.cpp │ ├── SubaddressAccountModel.h │ ├── SubaddressModel.cpp │ ├── SubaddressModel.h │ ├── TransactionHistoryModel.cpp │ ├── TransactionHistoryModel.h │ ├── TransactionHistorySortFilterModel.cpp │ └── TransactionHistorySortFilterModel.h ├── openpgp │ ├── CMakeLists.txt │ ├── hash.h │ ├── mpi.h │ ├── openpgp.cpp │ ├── openpgp.h │ ├── packet_stream.h │ ├── s_expression.h │ └── serialization.h ├── p2pool │ ├── P2PoolManager.cpp │ └── P2PoolManager.h ├── qt │ ├── FutureScheduler.cpp │ ├── FutureScheduler.h │ ├── KeysFiles.cpp │ ├── KeysFiles.h │ ├── MoneroSettings.cpp │ ├── MoneroSettings.h │ ├── NetworkAccessBlockingFactory.h │ ├── ScopeGuard.h │ ├── TailsOS.cpp │ ├── TailsOS.h │ ├── downloader.cpp │ ├── downloader.h │ ├── ipc.cpp │ ├── ipc.h │ ├── macoshelper.h │ ├── macoshelper.mm │ ├── network.cpp │ ├── network.h │ ├── updater.cpp │ ├── updater.h │ ├── utils.cpp │ └── utils.h ├── version.js.in └── zxcvbn-c │ ├── .gitignore │ ├── CMakeLists.txt │ ├── dict-src.h │ ├── zxcvbn.c │ └── zxcvbn.h ├── start-low-graphics-mode.bat ├── translations ├── CMakeLists.txt ├── monero-core.ts ├── monero-core_af.ts ├── monero-core_ar.ts ├── monero-core_az.ts ├── monero-core_bg.ts ├── monero-core_bn.ts ├── monero-core_cat.ts ├── monero-core_cs.ts ├── monero-core_da.ts ├── monero-core_de.ts ├── monero-core_el.ts ├── monero-core_eo.ts ├── monero-core_es.ts ├── monero-core_fa.ts ├── monero-core_fi.ts ├── monero-core_fr.ts ├── monero-core_ga.ts ├── monero-core_he.ts ├── monero-core_hi.ts ├── monero-core_hr.ts ├── monero-core_hu.ts ├── monero-core_id.ts ├── monero-core_is.ts ├── monero-core_it.ts ├── monero-core_ja.ts ├── monero-core_kmr.ts ├── monero-core_ko.ts ├── monero-core_lt.ts ├── monero-core_nb.ts ├── monero-core_ne.ts ├── monero-core_nl.ts ├── monero-core_pl.ts ├── monero-core_pt-br.ts ├── monero-core_pt-pt.ts ├── monero-core_ro.ts ├── monero-core_ru.ts ├── monero-core_sk.ts ├── monero-core_sl.ts ├── monero-core_sr.ts ├── monero-core_sv.ts ├── monero-core_ta.ts ├── monero-core_tr.ts ├── monero-core_uk.ts ├── monero-core_ur.ts ├── monero-core_vi.ts ├── monero-core_zh-cn.ts ├── monero-core_zh-tw.ts └── monero-core_zu.ts └── wizard ├── CMakeLists.txt ├── SeedListGrid.qml ├── SeedListItem.qml ├── WizardAskPassword.qml ├── WizardController.qml ├── WizardCreateDevice1.qml ├── WizardCreateWallet1.qml ├── WizardCreateWallet2.qml ├── WizardCreateWallet3.qml ├── WizardCreateWallet4.qml ├── WizardCreateWallet5.qml ├── WizardDaemonSettings.qml ├── WizardHeader.qml ├── WizardHome.qml ├── WizardLanguage.qml ├── WizardMenuItem.qml ├── WizardModeBootstrap.qml ├── WizardModeRemoteNodeWarning.qml ├── WizardModeSelection.qml ├── WizardNav.qml ├── WizardOpenWallet1.qml ├── WizardRestoreWallet1.qml ├── WizardRestoreWallet2.qml ├── WizardRestoreWallet3.qml ├── WizardRestoreWallet4.qml ├── WizardSummary.qml ├── WizardSummaryItem.qml ├── WizardWalletInput.qml └── template.pdf /.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /.github/workflows/verify_p2pool.yml: -------------------------------------------------------------------------------- 1 | name: ci/gh-actions/verify 2 | on: 3 | push: 4 | paths: 5 | - 'src/p2pool/P2PoolManager.cpp' 6 | pull_request: 7 | paths: 8 | - 'src/p2pool/P2PoolManager.cpp' 9 | jobs: 10 | p2pool-hashes: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v1 14 | - name: Verify Hashes 15 | run: | 16 | python3 .github/verify_p2pool.py 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.user 2 | *.user.* 3 | translations/*.qm 4 | build 5 | version.js 6 | # IOS stuff below 7 | moc_* 8 | *.o 9 | *.mak 10 | *.build 11 | *.xcodeproj 12 | monero-wallet-gui_plugin_import.cpp 13 | monero-wallet-gui_qml_plugin_import.cpp 14 | *.qmlc 15 | *.jsc 16 | qml_qmlcache.qrc 17 | 18 | ### Vim ### 19 | # Swap 20 | [._]*.s[a-v][a-z] 21 | [._]*.sw[a-p] 22 | [._]s[a-rt-v][a-z] 23 | [._]ss[a-gi-z] 24 | [._]sw[a-p] 25 | 26 | # Session 27 | Session.vim 28 | 29 | # Temporary 30 | .netrwhist 31 | *~ 32 | *.autosave 33 | # Auto-generated tag files 34 | tags 35 | # Persistent undo 36 | [._]*.un~ 37 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "monero"] 2 | path = monero 3 | url = https://github.com/monero-project/monero 4 | ignore = all 5 | [submodule "external/quirc"] 6 | path = external/quirc 7 | url = https://github.com/dlbeer/quirc/ 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2024, The Monero Project 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its contributors 16 | may be used to endorse or promote products derived from this software without 17 | specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | Parts of the project are originally copyright (c) 2012-2013 The Cryptonote 31 | developers 32 | 33 | -------------------------------------------------------------------------------- /cmake/32-bit-toolchain.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2024, The Monero Project 2 | # 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without modification, are 6 | # permitted provided that the following conditions are met: 7 | # 8 | # 1. Redistributions of source code must retain the above copyright notice, this list of 9 | # conditions and the following disclaimer. 10 | # 11 | # 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | # of conditions and the following disclaimer in the documentation and/or other 13 | # materials provided with the distribution. 14 | # 15 | # 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | # used to endorse or promote products derived from this software without specific 17 | # prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | # THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | if (NOT CMAKE_HOST_WIN32) 30 | set (CMAKE_SYSTEM_NAME Windows) 31 | endif() 32 | 33 | set (GCC_PREFIX i686-w64-mingw32) 34 | set (CMAKE_C_COMPILER ${GCC_PREFIX}-gcc) 35 | set (CMAKE_CXX_COMPILER ${GCC_PREFIX}-g++) 36 | set (CMAKE_AR ar CACHE FILEPATH "" FORCE) 37 | set (CMAKE_NM nm CACHE FILEPATH "" FORCE) 38 | set (CMAKE_LINKER ld CACHE FILEPATH "" FORCE) 39 | #set (CMAKE_RANLIB ${GCC_PREFIX}-gcc-ranlib CACHE FILEPATH "" FORCE) 40 | set (CMAKE_RC_COMPILER windres) 41 | 42 | set (CMAKE_FIND_ROOT_PATH "${MSYS2_FOLDER}/mingw32") 43 | 44 | # Ensure cmake doesn't find things in the wrong places 45 | set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # Find programs on host 46 | set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # Find libs in target 47 | set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Find includes in target 48 | 49 | set (MINGW_FLAG "-m32") 50 | set (USE_LTO_DEFAULT false) 51 | -------------------------------------------------------------------------------- /cmake/64-bit-toolchain.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2024, The Monero Project 2 | # 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without modification, are 6 | # permitted provided that the following conditions are met: 7 | # 8 | # 1. Redistributions of source code must retain the above copyright notice, this list of 9 | # conditions and the following disclaimer. 10 | # 11 | # 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | # of conditions and the following disclaimer in the documentation and/or other 13 | # materials provided with the distribution. 14 | # 15 | # 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | # used to endorse or promote products derived from this software without specific 17 | # prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | # THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | if (NOT CMAKE_HOST_WIN32) 30 | set (CMAKE_SYSTEM_NAME Windows) 31 | endif() 32 | 33 | set (GCC_PREFIX x86_64-w64-mingw32) 34 | set (CMAKE_C_COMPILER ${GCC_PREFIX}-gcc) 35 | set (CMAKE_CXX_COMPILER ${GCC_PREFIX}-g++) 36 | set (CMAKE_AR ar CACHE FILEPATH "" FORCE) 37 | set (CMAKE_NM nm CACHE FILEPATH "" FORCE) 38 | set (CMAKE_LINKER ld CACHE FILEPATH "" FORCE) 39 | #set (CMAKE_RANLIB ${GCC_PREFIX}-gcc-ranlib CACHE FILEPATH "" FORCE) 40 | set (CMAKE_RC_COMPILER windres) 41 | 42 | set (CMAKE_FIND_ROOT_PATH "${MSYS2_FOLDER}/mingw64") 43 | 44 | # Ensure cmake doesn't find things in the wrong places 45 | set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # Find programs on host 46 | set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # Find libs in target 47 | set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Find includes in target 48 | 49 | set (MINGW_FLAG "-m64") 50 | set (USE_LTO_DEFAULT false) 51 | -------------------------------------------------------------------------------- /cmake/CheckLinkerFlag.c: -------------------------------------------------------------------------------- 1 | #ifdef __CLASSIC_C__ 2 | int main() 3 | { 4 | int ac; 5 | char* av[]; 6 | #else 7 | int main(int ac, char* av[]) 8 | { 9 | #endif 10 | if (ac > 1000) { 11 | return *av[0]; 12 | } 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /cmake/CheckLinkerFlag.cmake: -------------------------------------------------------------------------------- 1 | include(CheckCCompilerFlag) 2 | 3 | macro(CHECK_LINKER_FLAG flag VARIABLE) 4 | if(NOT DEFINED "${VARIABLE}") 5 | if(NOT CMAKE_REQUIRED_QUIET) 6 | message(STATUS "Looking for ${flag} linker flag") 7 | endif() 8 | 9 | set(_cle_source ${CMAKE_SOURCE_DIR}/cmake/CheckLinkerFlag.c) 10 | 11 | set(saved_CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) 12 | set(CMAKE_C_FLAGS "${flag}") 13 | try_compile(${VARIABLE} 14 | ${CMAKE_BINARY_DIR} 15 | ${_cle_source} 16 | COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${flag} 17 | CMAKE_FLAGS 18 | OUTPUT_VARIABLE OUTPUT) 19 | unset(_cle_source) 20 | set(CMAKE_C_FLAGS ${saved_CMAKE_C_FLAGS}) 21 | unset(saved_CMAKE_C_FLAGS) 22 | 23 | if ("${OUTPUT}" MATCHES "warning.*ignored") 24 | set(${VARIABLE} 0) 25 | endif() 26 | 27 | if(${VARIABLE}) 28 | if(NOT CMAKE_REQUIRED_QUIET) 29 | message(STATUS "Looking for ${flag} linker flag - found") 30 | endif() 31 | set(${VARIABLE} 1 CACHE INTERNAL "Have linker flag ${flag}") 32 | file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 33 | "Determining if the ${flag} linker flag is supported " 34 | "passed with the following output:\n" 35 | "${OUTPUT}\n\n") 36 | else() 37 | if(NOT CMAKE_REQUIRED_QUIET) 38 | message(STATUS "Looking for ${flag} linker flag - not found") 39 | endif() 40 | set(${VARIABLE} "" CACHE INTERNAL "Have linker flag ${flag}") 41 | file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 42 | "Determining if the ${flag} linker flag is supported " 43 | "failed with the following output:\n" 44 | "${OUTPUT}\n\n") 45 | endif() 46 | endif() 47 | endmacro() 48 | -------------------------------------------------------------------------------- /cmake/VersionGui.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2024, The Monero Project 2 | # 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without modification, are 6 | # permitted provided that the following conditions are met: 7 | # 8 | # 1. Redistributions of source code must retain the above copyright notice, this list of 9 | # conditions and the following disclaimer. 10 | # 11 | # 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | # of conditions and the following disclaimer in the documentation and/or other 13 | # materials provided with the distribution. 14 | # 15 | # 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | # used to endorse or promote products derived from this software without specific 17 | # prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | # THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | function (write_static_version_header tag) 30 | set(VERSION_TAG_GUI "${tag}" CACHE STRING "The tag portion of the Monero GUI software version" FORCE) 31 | configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.js.in" "${CMAKE_CURRENT_SOURCE_DIR}/version.js") 32 | endfunction () 33 | 34 | find_package(Git QUIET) 35 | if ("$Format:$" STREQUAL "") 36 | # We're in a tarball; use hard-coded variables. 37 | write_static_version_header("release") 38 | elseif (GIT_FOUND OR Git_FOUND) 39 | message(STATUS "Found Git: ${GIT_EXECUTABLE}") 40 | get_version_tag_from_git("${GIT_EXECUTABLE}") 41 | write_static_version_header(${VERSIONTAG}) 42 | else() 43 | message(STATUS "WARNING: Git was not found!") 44 | write_static_version_header("unknown") 45 | endif () 46 | add_custom_target(genversiongui ALL 47 | DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/version.js") 48 | -------------------------------------------------------------------------------- /components/AdvancedOptionsItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Layouts 1.1 3 | 4 | import "../components" as MoneroComponents 5 | 6 | RowLayout { 7 | id: advancedOptionsItem 8 | 9 | property alias title: title.text 10 | property alias tooltip: title.tooltip 11 | property alias button1: button1 12 | property alias button2: button2 13 | property alias button3: button3 14 | 15 | RowLayout { 16 | id: titlecolumn 17 | Layout.alignment: Qt.AlignTop | Qt.AlignLeft 18 | Layout.preferredWidth: 195 19 | Layout.maximumWidth: 195 20 | Layout.leftMargin: 10 21 | 22 | MoneroComponents.Label { 23 | id: title 24 | fontSize: 14 25 | tooltipIconVisible: true 26 | } 27 | 28 | Rectangle { 29 | id: separator 30 | Layout.fillWidth: true 31 | height: 10 32 | color: "transparent" 33 | } 34 | } 35 | 36 | ColumnLayout { 37 | Layout.fillWidth: false 38 | Layout.alignment: Qt.AlignTop | Qt.AlignLeft 39 | spacing: 4 40 | 41 | RowLayout { 42 | Layout.fillWidth: false 43 | spacing: 12 44 | Layout.alignment: Qt.AlignTop | Qt.AlignLeft 45 | 46 | StandardButton { 47 | id: button1 48 | small: true 49 | primary: false 50 | visible: button1.text 51 | } 52 | 53 | StandardButton { 54 | id: button2 55 | small: true 56 | primary: false 57 | visible: button2.text 58 | } 59 | 60 | StandardButton { 61 | id: button3 62 | small: true 63 | primary: false 64 | visible: button3.text 65 | } 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /components/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 2 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 3 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 4 | ### 5 | 6 | #configure_file(${CMAKE_CURRENT_SOURCE_DIR}/defines.h.cmake 7 | # ${CMAKE_CURRENT_BINARY_DIR}/defines.h) 8 | 9 | file(GLOB_RECURSE UI_FILES *.ui) 10 | file(GLOB_RECURSE CODE_FILES *.cpp) 11 | 12 | qt5_wrap_ui(UI_HEADERS ${UI_FILES}) 13 | #qt5_add_resources(RESOURCE_FILES ../resources/resources.qrc) 14 | 15 | # Windows application icon 16 | if (WIN32) 17 | set(WINDOWS_RES_FILE ${CMAKE_CURRENT_BINARY_DIR}/resources.obj) 18 | if (MSVC) 19 | add_custom_command(OUTPUT ${WINDOWS_RES_FILE} 20 | COMMAND rc.exe /fo ${WINDOWS_RES_FILE} resources.rc 21 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/win 22 | ) 23 | else() 24 | add_custom_command(OUTPUT ${WINDOWS_RES_FILE} 25 | COMMAND windres.exe resources.rc ${WINDOWS_RES_FILE} 26 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/win 27 | ) 28 | endif() 29 | endif() 30 | 31 | add_executable(${CMAKE_PROJECT_NAME} WIN32 32 | ${UI_HEADERS} 33 | ${CODE_FILES} 34 | ${RESOURCE_FILES} 35 | ${WINDOWS_RES_FILE} 36 | ) 37 | target_link_libraries(${CMAKE_PROJECT_NAME} 38 | Qt5::Widgets 39 | ) 40 | 41 | if (UNIX) 42 | install(TARGETS ${CMAKE_PROJECT_NAME} 43 | RUNTIME DESTINATION bin) 44 | elseif (WIN32) 45 | install(TARGETS ${CMAKE_PROJECT_NAME} 46 | DESTINATION .) 47 | endif() 48 | -------------------------------------------------------------------------------- /components/ContextMenu.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Controls 2.2 3 | 4 | import FontAwesome 1.0 5 | import "../components" as MoneroComponents 6 | 7 | MouseArea { 8 | signal cut() 9 | signal copy() 10 | signal paste() 11 | signal remove() 12 | signal selectAll() 13 | 14 | id: root 15 | acceptedButtons: Qt.RightButton 16 | anchors.fill: parent 17 | onClicked: { 18 | if (mouse.button === Qt.RightButton) { 19 | root.parent.persistentSelection = true; 20 | contextMenu.open() 21 | root.parent.cursorVisible = true; 22 | } 23 | } 24 | 25 | Menu { 26 | id: contextMenu 27 | 28 | background: Rectangle { 29 | border.color: MoneroComponents.Style.buttonBackgroundColorDisabledHover 30 | border.width: 1 31 | radius: 2 32 | color: MoneroComponents.Style.blackTheme ? MoneroComponents.Style.buttonBackgroundColorDisabled : "#E5E5E5" 33 | } 34 | 35 | padding: 1 36 | width: 110 37 | x: root.mouseX 38 | y: root.mouseY 39 | 40 | onClosed: { 41 | if (!root.parent.activeFocus) { 42 | root.parent.cursorVisible = false; 43 | } 44 | root.parent.persistentSelection = false; 45 | root.parent.forceActiveFocus() 46 | } 47 | 48 | MoneroComponents.ContextMenuItem { 49 | enabled: root.parent.selectedText != "" && !root.parent.readOnly 50 | onTriggered: root.cut() 51 | text: qsTr("Cut") + translationManager.emptyString 52 | } 53 | 54 | MoneroComponents.ContextMenuItem { 55 | enabled: root.parent.selectedText != "" 56 | onTriggered: root.copy() 57 | text: qsTr("Copy") + translationManager.emptyString 58 | } 59 | 60 | MoneroComponents.ContextMenuItem { 61 | enabled: root.parent.canPaste === true 62 | onTriggered: root.paste() 63 | text: qsTr("Paste") + translationManager.emptyString 64 | } 65 | 66 | MoneroComponents.ContextMenuItem { 67 | enabled: root.parent.selectedText != "" && !root.parent.readOnly 68 | onTriggered: root.remove() 69 | text: qsTr("Delete") + translationManager.emptyString 70 | } 71 | 72 | MoneroComponents.ContextMenuItem { 73 | enabled: root.parent.text != "" 74 | onTriggered: root.selectAll() 75 | text: qsTr("Select All") + translationManager.emptyString 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /components/ContextMenuItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Controls 2.2 3 | import QtQuick.Layouts 1.1 4 | 5 | import FontAwesome 1.0 6 | import "../components" as MoneroComponents 7 | 8 | MenuItem { 9 | id: menuItem 10 | 11 | property bool glyphIconSolid: true 12 | property alias glyphIcon: glyphIcon.text 13 | 14 | background: Rectangle { 15 | color: MoneroComponents.Style.buttonBackgroundColorDisabledHover 16 | opacity: 0 17 | 18 | MouseArea { 19 | id: mouse 20 | 21 | anchors.fill: parent 22 | hoverEnabled: true 23 | onEntered: { 24 | parent.opacity = 1; 25 | } 26 | onExited: { 27 | parent.opacity = 0; 28 | } 29 | onClicked: { 30 | if (menuItem.enabled) { 31 | menuItem.triggered(); 32 | parent.opacity = 0; 33 | } 34 | } 35 | } 36 | } 37 | 38 | contentItem: RowLayout { 39 | anchors.fill: parent 40 | anchors.leftMargin: 20 41 | anchors.rightMargin: 10 42 | opacity: menuItem.enabled ? 1 : 0.4 43 | spacing: 8 44 | 45 | Text { 46 | id: glyphIcon 47 | 48 | color: MoneroComponents.Style.buttonTextColor 49 | font.family: glyphIconSolid ? FontAwesome.fontFamilySolid : FontAwesome.fontFamily 50 | font.pixelSize: 14 51 | font.styleName: glyphIconSolid ? "Solid" : "Regular" 52 | } 53 | 54 | Text { 55 | color: MoneroComponents.Style.blackTheme ? MoneroComponents.Style.buttonTextColor : MoneroComponents.Style.defaultFontColor 56 | font.family: MoneroComponents.Style.fontRegular.name 57 | font.pixelSize: 14 58 | Layout.fillWidth: true 59 | text: menuItem.text 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /components/Dialog.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | import QtQuick.Controls 2.2 31 | import QtQuick.Layouts 1.1 32 | 33 | import "." as MoneroComponents 34 | 35 | Popup { 36 | id: dialog 37 | 38 | default property alias content: mainLayout.children 39 | property alias title: header.text 40 | 41 | background: Rectangle { 42 | border.color: MoneroComponents.Style.blackTheme ? Qt.rgba(255, 255, 255, 0.25) : Qt.rgba(0, 0, 0, 0.25) 43 | border.width: 1 44 | color: MoneroComponents.Style.blackTheme ? "black" : "white" 45 | radius: 10 46 | } 47 | closePolicy: Popup.CloseOnEscape 48 | focus: true 49 | padding: 20 50 | x: (appWindow.width - width) / 2 51 | y: (appWindow.height - height) / 2 52 | 53 | ColumnLayout { 54 | id: mainLayout 55 | spacing: dialog.padding 56 | 57 | Text { 58 | id: header 59 | color: MoneroComponents.Style.defaultFontColor 60 | font.bold: true 61 | font.family: MoneroComponents.Style.fontRegular.name 62 | font.pixelSize: 18 63 | visible: text != "" 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /components/IconButton.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | import "../components" as MoneroComponents 31 | import "../components/effects" as MoneroEffects 32 | 33 | MoneroEffects.ImageMask { 34 | id: button 35 | z: 666 36 | color: MoneroComponents.Style.defaultFontColor 37 | image: "" 38 | 39 | property alias tooltip: tooltip.text 40 | signal clicked(var mouse) 41 | 42 | MoneroComponents.Tooltip { 43 | id: tooltip 44 | anchors.fill: parent 45 | tooltipLeft: true 46 | } 47 | 48 | MouseArea { 49 | anchors.fill: parent 50 | hoverEnabled: true 51 | cursorShape: Qt.PointingHandCursor 52 | 53 | onEntered: { 54 | tooltip.text ? tooltip.tooltipPopup.open() : "" 55 | button.width = button.width + 2 56 | button.height = button.height + 2 57 | } 58 | 59 | onExited: { 60 | tooltip.text ? tooltip.tooltipPopup.close() : "" 61 | button.width = button.width - 2 62 | button.height = button.height - 2 63 | } 64 | 65 | onClicked: button.clicked(mouse) 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /components/Input.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick.Controls 2.0 30 | import QtQuick 2.9 31 | 32 | import "../components" as MoneroComponents 33 | 34 | TextField { 35 | id: textField 36 | font.family: MoneroComponents.Style.fontRegular.name 37 | font.pixelSize: 18 38 | font.bold: true 39 | horizontalAlignment: TextInput.AlignLeft 40 | selectByMouse: true 41 | color: MoneroComponents.Style.defaultFontColor 42 | selectionColor: MoneroComponents.Style.textSelectionColor 43 | selectedTextColor: MoneroComponents.Style.textSelectedColor 44 | 45 | background: Rectangle { 46 | color: "transparent" 47 | } 48 | 49 | MoneroComponents.ContextMenu { 50 | cursorShape: Qt.IBeamCursor 51 | onCut: textField.cut(); 52 | onCopy: textField.copy(); 53 | onPaste: { 54 | var previoustextFieldLength = textField.length 55 | var previousCursorPosition = textField.cursorPosition; 56 | textField.paste(); 57 | textField.forceActiveFocus() 58 | textField.cursorPosition = previousCursorPosition + (textField.length - previoustextFieldLength); 59 | } 60 | onRemove: textField.remove(selectionStart, selectionEnd); 61 | onSelectAll: textField.selectAll(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /components/LabelButton.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | import QtQuick.Layouts 1.1 31 | 32 | import "../components" as MoneroComponents 33 | 34 | 35 | Rectangle { 36 | signal clicked(); 37 | property alias text: labelButtonText.text 38 | 39 | id: labelButton 40 | color: MoneroComponents.Style.buttonBackgroundColorDisabled 41 | radius: 3 42 | height: 20 43 | width: labelButtonText.width + 14 44 | anchors.right: copyButton.left 45 | anchors.rightMargin: 6 46 | 47 | MoneroComponents.TextPlain { 48 | id: labelButtonText 49 | anchors.verticalCenter: parent.verticalCenter 50 | anchors.horizontalCenter: parent.horizontalCenter 51 | font.family: MoneroComponents.Style.fontRegular.name 52 | font.pixelSize: 12 53 | font.bold: true 54 | text: "" 55 | color: MoneroComponents.Style.inlineButtonTextColor 56 | } 57 | 58 | MouseArea { 59 | cursorShape: Qt.PointingHandCursor 60 | anchors.fill: parent 61 | hoverEnabled: true 62 | onClicked: labelButton.clicked() 63 | onEntered: { 64 | labelButton.color = MoneroComponents.Style.buttonBackgroundColorDisabledHover; 65 | labelButtonText.opacity = 0.8; 66 | } 67 | onExited: { 68 | labelButton.color = MoneroComponents.Style.buttonBackgroundColorDisabled; 69 | labelButtonText.opacity = 1.0; 70 | } 71 | } 72 | } 73 | 74 | -------------------------------------------------------------------------------- /components/LabelSubheader.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | 31 | import "../components" as MoneroComponents 32 | import "../components/effects/" as MoneroEffects 33 | 34 | Label { 35 | id: item 36 | fontSize: 18 37 | tooltipIconVisible: true 38 | 39 | Rectangle { 40 | anchors.top: item.bottom 41 | anchors.topMargin: 4 42 | anchors.left: parent.left 43 | anchors.right: parent.right 44 | height: 2 45 | color: MoneroComponents.Style.appWindowBorderColor 46 | 47 | MoneroEffects.ColorTransition { 48 | targetObj: parent 49 | blackColor: MoneroComponents.Style._b_appWindowBorderColor 50 | whiteColor: MoneroComponents.Style._w_appWindowBorderColor 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /components/LanguageButton.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | import QtQuick.Layouts 1.3 31 | 32 | import FontAwesome 1.0 33 | 34 | import "../components" as MoneroComponents 35 | 36 | Item { 37 | implicitHeight: layout.height 38 | implicitWidth: layout.width 39 | 40 | RowLayout { 41 | id: layout 42 | opacity: mouseArea.containsMouse ? 1 : 0.85 43 | spacing: 10 44 | 45 | MoneroComponents.Label { 46 | Layout.bottomMargin: 5 47 | fontColor: MoneroComponents.Style.defaultFontColor 48 | fontFamily: FontAwesome.fontFamilySolid 49 | fontSize: 26 50 | styleName: "Solid" 51 | text: FontAwesome.language 52 | } 53 | 54 | MoneroComponents.TextPlain { 55 | font.pixelSize: 14 56 | text: persistentSettings.language 57 | } 58 | } 59 | 60 | MouseArea { 61 | id: mouseArea 62 | anchors.fill: parent 63 | cursorShape: Qt.PointingHandCursor 64 | hoverEnabled: true 65 | onClicked: appWindow.toggleLanguageView() 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /components/MenuBar.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import Qt.labs.platform 1.0 as PlatformLabs 30 | import "." as MoneroComponents 31 | 32 | PlatformLabs.MenuBar { 33 | PlatformLabs.Menu { 34 | title: qsTr("File") 35 | PlatformLabs.MenuItem { 36 | enabled: appWindow.viewState === "normal" 37 | text: qsTr("Close Wallet") 38 | onTriggered: appWindow.showWizard() 39 | } 40 | } 41 | PlatformLabs.Menu { 42 | title: qsTr("View") 43 | PlatformLabs.MenuItem { 44 | text: MoneroComponents.Style.blackTheme ? qsTr("Light Theme") : qsTr("Dark Theme") 45 | onTriggered: { 46 | MoneroComponents.Style.blackTheme = !MoneroComponents.Style.blackTheme; 47 | } 48 | } 49 | PlatformLabs.MenuItem { 50 | text: qsTr("Change Language") 51 | onTriggered: appWindow.toggleLanguageView(); 52 | } 53 | } 54 | } 55 | 56 | -------------------------------------------------------------------------------- /components/MenuButtonDivider.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | 3 | import "." as MoneroComponents 4 | import "effects/" as MoneroEffects 5 | 6 | Rectangle { 7 | color: MoneroComponents.Style.appWindowBorderColor 8 | height: 1 9 | 10 | MoneroEffects.ColorTransition { 11 | targetObj: parent 12 | blackColor: MoneroComponents.Style._b_appWindowBorderColor 13 | whiteColor: MoneroComponents.Style._w_appWindowBorderColor 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /components/NavbarItem.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | 31 | QtObject { 32 | property bool active: false 33 | property string text 34 | property bool visible: true 35 | 36 | signal selected() 37 | } 38 | -------------------------------------------------------------------------------- /components/Slider.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Controls 2.0 as QtQuickControls 3 | import QtQuick.Layouts 1.1 4 | 5 | import "../components" as MoneroComponents 6 | 7 | ColumnLayout { 8 | property alias from: slider.from 9 | property alias stepSize: slider.stepSize 10 | property alias to: slider.to 11 | property alias value: slider.value 12 | 13 | property alias text: label.text 14 | 15 | signal moved() 16 | 17 | spacing: 0 18 | 19 | MoneroComponents.TextPlain { 20 | id: label 21 | color: MoneroComponents.Style.defaultFontColor 22 | font.pixelSize: 14 23 | font.family: MoneroComponents.Style.fontRegular.name 24 | } 25 | 26 | QtQuickControls.Slider { 27 | id: slider 28 | leftPadding: 0 29 | snapMode: QtQuickControls.Slider.SnapAlways 30 | 31 | background: Rectangle { 32 | x: parent.leftPadding 33 | y: parent.topPadding + parent.availableHeight / 2 - height / 2 34 | implicitWidth: 200 35 | implicitHeight: 4 36 | width: parent.availableWidth 37 | height: implicitHeight 38 | radius: 2 39 | color: MoneroComponents.Style.progressBarBackgroundColor 40 | 41 | Rectangle { 42 | width: parent.visualPosition * parent.width 43 | height: parent.height 44 | color: MoneroComponents.Style.green 45 | radius: 2 46 | } 47 | } 48 | 49 | handle: Rectangle { 50 | x: parent.leftPadding + parent.visualPosition * (parent.availableWidth - width) 51 | y: parent.topPadding + parent.availableHeight / 2 - height / 2 52 | implicitWidth: 18 53 | implicitHeight: 18 54 | radius: 8 55 | color: parent.pressed ? "#f0f0f0" : "#f6f6f6" 56 | border.color: MoneroComponents.Style.grey 57 | } 58 | 59 | onMoved: parent.moved() 60 | 61 | MouseArea { 62 | anchors.fill: parent 63 | acceptedButtons: Qt.NoButton 64 | hoverEnabled: true 65 | cursorShape: Qt.PointingHandCursor 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /components/TextBlock.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | 3 | import "../components" as MoneroComponents 4 | 5 | TextEdit { 6 | color: MoneroComponents.Style.defaultFontColor 7 | font.family: MoneroComponents.Style.fontRegular.name 8 | selectionColor: MoneroComponents.Style.textSelectionColor 9 | wrapMode: Text.Wrap 10 | readOnly: true 11 | selectByMouse: true 12 | // Workaround for https://bugreports.qt.io/browse/QTBUG-50587 13 | onFocusChanged: { 14 | if(focus === false) 15 | deselect() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /components/TextPlain.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | 3 | import "." as MoneroComponents 4 | import "effects/" as MoneroEffects 5 | 6 | Text { 7 | // When using this component, please note that if you use a color different 8 | // than `defaultFontColor`, you are required to also define `themeTransitionXColor`. 9 | // If you do not set these the component will receive the wrong color after a transition. 10 | // If you do not want to set these, use `themeTransition: false`. 11 | id: root 12 | property bool themeTransition: true 13 | property string themeTransitionBlackColor: "" 14 | property string themeTransitionWhiteColor: "" 15 | property alias tooltip: tooltip.text 16 | property alias tooltipLeft: tooltip.tooltipLeft 17 | property alias tooltipIconVisible: tooltip.tooltipIconVisible 18 | property alias tooltipPopup: tooltip.tooltipPopup 19 | font.family: MoneroComponents.Style.fontMedium.name 20 | font.bold: false 21 | font.pixelSize: 14 22 | textFormat: Text.PlainText 23 | 24 | Rectangle { 25 | width: root.contentWidth 26 | height: root.height 27 | anchors.left: parent.left 28 | anchors.top: parent.top 29 | color: root.focus ? MoneroComponents.Style.titleBarButtonHoverColor : "transparent" 30 | } 31 | 32 | MoneroEffects.ColorTransition { 33 | enabled: root.themeTransition 34 | themeTransition: root.themeTransition 35 | targetObj: root 36 | duration: 750 37 | blackColor: root.themeTransitionBlackColor !== "" ? root.themeTransitionBlackColor : MoneroComponents.Style._b_defaultFontColor 38 | whiteColor: root.themeTransitionWhiteColor !== "" ? root.themeTransitionWhiteColor : MoneroComponents.Style._w_defaultFontColor 39 | } 40 | 41 | MoneroComponents.Tooltip { 42 | id: tooltip 43 | anchors.top: parent.top 44 | anchors.left: tooltipIconVisible ? parent.right : parent.left 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /components/TextPlainArea.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Controls 2.0 3 | 4 | import "." as MoneroComponents 5 | 6 | TextArea { 7 | id: textArea 8 | property bool themeTransition: true 9 | property string colorWhiteTheme: "" 10 | property string colorBlackTheme: "" 11 | color: MoneroComponents.Style.defaultFontColor 12 | font.family: MoneroComponents.Style.fontRegular.name 13 | font.pixelSize: 14 14 | selectByMouse: false 15 | wrapMode: Text.WordWrap; 16 | textMargin: 0 17 | leftPadding: 0 18 | topPadding: 0 19 | readOnly: true 20 | textFormat: TextEdit.PlainText 21 | 22 | states: [ 23 | State { 24 | name: "black"; 25 | when: textArea.themeTransition && MoneroComponents.Style.blackTheme 26 | PropertyChanges { 27 | target: textArea 28 | color: { 29 | return textArea.colorBlackTheme ? textArea.colorBlackTheme : MoneroComponents.Style._b_defaultFontColor 30 | } 31 | } 32 | }, State { 33 | name: "white"; 34 | when: textArea.themeTransition && !MoneroComponents.Style.blackTheme 35 | PropertyChanges { 36 | target: textArea 37 | color: { 38 | return textArea.colorWhiteTheme ? textArea.colorWhiteTheme : MoneroComponents.Style._w_defaultFontColor 39 | } 40 | } 41 | } 42 | ] 43 | 44 | transitions: Transition { 45 | enabled: appWindow.themeTransition 46 | ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: 750 } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /components/TipItem.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | import QtQuick.Window 2.1 31 | 32 | import "../components" as MoneroComponents 33 | 34 | Window { 35 | property alias text: content.text 36 | property alias containsMouse: tipArea.containsMouse 37 | flags: Qt.ToolTip 38 | color: "transparent" 39 | height: rect.height + tip.height 40 | width: rect.width 41 | 42 | MouseArea { 43 | id: tipArea 44 | hoverEnabled: true 45 | anchors.fill: parent 46 | } 47 | 48 | Rectangle { 49 | id: rect 50 | width: content.width + 12 51 | height: content.height + 17 52 | color: "#FF6C3C" 53 | //radius: 3 54 | 55 | Image { 56 | id: tip 57 | anchors.top: parent.bottom 58 | anchors.left: parent.left 59 | anchors.leftMargin: 5 60 | source: "qrc:///images/tip.png" 61 | } 62 | 63 | MoneroComponents.TextPlain { 64 | id: content 65 | anchors.horizontalCenter: parent.horizontalCenter 66 | y: 6 67 | lineHeight: 0.7 68 | font.family: "Arial" 69 | font.pixelSize: 12 70 | color: "#FFFFFF" 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /components/WarningBox.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Layouts 1.1 3 | import QtQuick.Controls 2.0 4 | 5 | import "." as MoneroComponents 6 | 7 | Rectangle { 8 | id: root 9 | property alias text: content.text 10 | property alias textColor: content.color 11 | property int fontSize: 15 12 | 13 | Layout.fillWidth: true 14 | Layout.preferredHeight: warningLayout.height 15 | 16 | color: MoneroComponents.Style.titleBarButtonHoverColor 17 | radius: 4 18 | border.color: MoneroComponents.Style.inputBorderColorInActive 19 | border.width: 1 20 | 21 | signal linkActivated; 22 | 23 | RowLayout { 24 | id: warningLayout 25 | spacing: 0 26 | anchors.left: parent.left 27 | anchors.right: parent.right 28 | 29 | Image { 30 | Layout.alignment: Qt.AlignVCenter 31 | Layout.preferredHeight: 33 32 | Layout.preferredWidth: 33 33 | Layout.rightMargin: 12 34 | Layout.leftMargin: 18 35 | Layout.topMargin: 12 36 | Layout.bottomMargin: 12 37 | source: "qrc:///images/warning.png" 38 | } 39 | 40 | Text { 41 | id: content 42 | Layout.fillWidth: true 43 | color: MoneroComponents.Style.defaultFontColor 44 | font.family: MoneroComponents.Style.fontRegular.name 45 | font.pixelSize: root.fontSize 46 | horizontalAlignment: TextInput.AlignLeft 47 | textFormat: Text.RichText 48 | wrapMode: Text.WordWrap 49 | leftPadding: 4 50 | rightPadding: 18 51 | topPadding: 10 52 | bottomPadding: 10 53 | onLinkActivated: root.linkActivated(); 54 | 55 | MouseArea { 56 | anchors.fill: parent 57 | acceptedButtons: Qt.NoButton 58 | cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /components/effects/ColorTransition.qml: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | import QtQuick 2.9 30 | import QtGraphicalEffects 1.0 31 | 32 | import "../" as MoneroComponents 33 | 34 | Item { 35 | id: root 36 | property var targetObj 37 | property string blackColor: "" 38 | property string whiteColor: "" 39 | property int duration: 300 40 | property bool themeTransition: true 41 | 42 | states: [ 43 | State { 44 | name: "black"; 45 | when: MoneroComponents.Style.blackTheme && root.themeTransition 46 | PropertyChanges { target: root.targetObj; color: root.blackColor} 47 | }, State { 48 | name: "white"; 49 | when: !MoneroComponents.Style.blackTheme && root.themeTransition 50 | PropertyChanges { target: root.targetObj; color: root.whiteColor} 51 | } 52 | ] 53 | 54 | transitions: Transition { 55 | enabled: appWindow.themeTransition 56 | ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: root.duration } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /components/qmldir: -------------------------------------------------------------------------------- 1 | singleton Style 1.0 Style.qml 2 | -------------------------------------------------------------------------------- /external/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(quirc STATIC 2 | quirc/lib/decode.c 3 | quirc/lib/identify.c 4 | quirc/lib/quirc.c 5 | quirc/lib/version_db.c 6 | ) 7 | set_target_properties(quirc PROPERTIES POSITION_INDEPENDENT_CODE ON) 8 | target_include_directories(quirc PUBLIC quirc/lib) 9 | -------------------------------------------------------------------------------- /fonts/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | qt5_add_resources(RESOURCE_FILES *.otf) 2 | -------------------------------------------------------------------------------- /fonts/FontAwesome/FontAwesome.qml: -------------------------------------------------------------------------------- 1 | pragma Singleton 2 | import QtQuick 2.9 3 | 4 | Object { 5 | 6 | //Font Awesome version 5.15.3 7 | FontLoader { 8 | id: regular 9 | source: "./fa-regular-400.otf" 10 | } 11 | 12 | FontLoader { 13 | id: brands 14 | source: "./fa-brands-400.otf" 15 | } 16 | 17 | FontLoader { 18 | id: solid 19 | source: "./fa-solid-900.otf" 20 | } 21 | 22 | property string fontFamily: regular.name 23 | property string fontFamilyBrands: brands.name 24 | property string fontFamilySolid: solid.name 25 | 26 | // Icons used in Monero GUI (Font Awesome version 5.15.3) 27 | // To add new icons, check unicodes in Font Awesome Free's Cheatsheet: 28 | // https://fontawesome.com/v5/cheatsheet/free/solid 29 | // https://fontawesome.com/v5/cheatsheet/free/regular 30 | // https://fontawesome.com/v5/cheatsheet/free/brands 31 | 32 | property string addressBook : "\uf2b9" 33 | property string arrowCircleRight : "\uf0a9" 34 | property string arrowDown : "\uf063" 35 | property string arrowLeft : "\uf060" 36 | property string arrowRight : "\uf061" 37 | property string cashRegister: "\uf788" 38 | property string checkCircle: "\uf058" 39 | property string clipboard : "\uf0ea" 40 | property string clockO : "\uf017" 41 | property string cloud : "\uf0c2" 42 | property string desktop : "\uf108" 43 | property string edit : "\uf044" 44 | property string ellipsisH : "\uf141" 45 | property string exclamationCircle : "\uf06a" 46 | property string eye : "\uf06e" 47 | property string eyeSlash : "\uf070" 48 | property string folderOpen : "\uf07c" 49 | property string globe : "\uf0ac" 50 | property string home : "\uf015" 51 | property string houseUser : "\ue065" 52 | property string infinity : "\uf534" 53 | property string info : "\uf129" 54 | property string key : "\uf084" 55 | property string language : "\uf1ab" 56 | property string lock : "\uf023" 57 | property string magnifyingGlass : "\uf002" 58 | property string minus : "\uf068" 59 | property string minusCircle : "\uf056" 60 | property string moonO : "\uf186" 61 | property string monero : "\uf3d0" 62 | property string paste : "\uf0ea" 63 | property string pencilSquare : "\uf14b" 64 | property string plus : "\uf067" 65 | property string plusCircle : "\uf055" 66 | property string productHunt : "\uf288" 67 | property string qrcode : "\uf029" 68 | property string questionCircle : "\uf059" 69 | property string random : "\uf074" 70 | property string repeat : "\uf01e" 71 | property string searchPlus : "\uf00e" 72 | property string server : "\uf233" 73 | property string shieldAlt : "\uf3ed" 74 | property string signOutAlt : "\uf2f5" 75 | property string times : "\uf00d" 76 | } 77 | -------------------------------------------------------------------------------- /fonts/FontAwesome/Object.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | 3 | QtObject { 4 | id: object 5 | default property alias children: object.__children 6 | 7 | property list __children: [QtObject {}] 8 | } 9 | -------------------------------------------------------------------------------- /fonts/FontAwesome/fa-brands-400.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/FontAwesome/fa-brands-400.otf -------------------------------------------------------------------------------- /fonts/FontAwesome/fa-regular-400.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/FontAwesome/fa-regular-400.otf -------------------------------------------------------------------------------- /fonts/FontAwesome/fa-solid-900.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/FontAwesome/fa-solid-900.otf -------------------------------------------------------------------------------- /fonts/FontAwesome/qmldir: -------------------------------------------------------------------------------- 1 | module FontAwesome 2 | singleton FontAwesome 1.0 FontAwesome.qml 3 | -------------------------------------------------------------------------------- /fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /fonts/RobotoMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/RobotoMono-Bold.ttf -------------------------------------------------------------------------------- /fonts/RobotoMono-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/RobotoMono-Light.ttf -------------------------------------------------------------------------------- /fonts/RobotoMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/RobotoMono-Medium.ttf -------------------------------------------------------------------------------- /fonts/RobotoMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/fonts/RobotoMono-Regular.ttf -------------------------------------------------------------------------------- /images/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | qt5_add_resources(RESOURCE_FILES *.png) 2 | -------------------------------------------------------------------------------- /images/appicon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicon.icns -------------------------------------------------------------------------------- /images/appicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicon.ico -------------------------------------------------------------------------------- /images/appicons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/128x128.png -------------------------------------------------------------------------------- /images/appicons/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/16x16.png -------------------------------------------------------------------------------- /images/appicons/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/24x24.png -------------------------------------------------------------------------------- /images/appicons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/256x256.png -------------------------------------------------------------------------------- /images/appicons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/32x32.png -------------------------------------------------------------------------------- /images/appicons/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/48x48.png -------------------------------------------------------------------------------- /images/appicons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/64x64.png -------------------------------------------------------------------------------- /images/appicons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/appicons/96x96.png -------------------------------------------------------------------------------- /images/arrow-right-in-circle-outline-medium-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /images/arrow-right-in-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/arrow-right-in-circle.png -------------------------------------------------------------------------------- /images/arrow-right-in-circle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/arrow-right-in-circle@2x.png -------------------------------------------------------------------------------- /images/arrow-right-medium-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/arrow-right-medium-white.png -------------------------------------------------------------------------------- /images/arrow-right-medium-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/arrow-right-medium-white@2x.png -------------------------------------------------------------------------------- /images/busy-indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/busy-indicator.png -------------------------------------------------------------------------------- /images/busy-indicator@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/busy-indicator@2x.png -------------------------------------------------------------------------------- /images/card-background-black0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black0.png -------------------------------------------------------------------------------- /images/card-background-black0@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black0@2x.png -------------------------------------------------------------------------------- /images/card-background-black1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black1.png -------------------------------------------------------------------------------- /images/card-background-black1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black1@2x.png -------------------------------------------------------------------------------- /images/card-background-black2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black2.png -------------------------------------------------------------------------------- /images/card-background-black2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black2@2x.png -------------------------------------------------------------------------------- /images/card-background-black3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black3.png -------------------------------------------------------------------------------- /images/card-background-black3@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black3@2x.png -------------------------------------------------------------------------------- /images/card-background-black4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black4.png -------------------------------------------------------------------------------- /images/card-background-black4@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black4@2x.png -------------------------------------------------------------------------------- /images/card-background-black5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black5.png -------------------------------------------------------------------------------- /images/card-background-black5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black5@2x.png -------------------------------------------------------------------------------- /images/card-background-black6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black6.png -------------------------------------------------------------------------------- /images/card-background-black6@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black6@2x.png -------------------------------------------------------------------------------- /images/card-background-black7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black7.png -------------------------------------------------------------------------------- /images/card-background-black7@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-black7@2x.png -------------------------------------------------------------------------------- /images/card-background-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-white.png -------------------------------------------------------------------------------- /images/card-background-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/card-background-white@2x.png -------------------------------------------------------------------------------- /images/check-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /images/create-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/create-wallet.png -------------------------------------------------------------------------------- /images/create-wallet@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/create-wallet@2x.png -------------------------------------------------------------------------------- /images/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /images/fullscreen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /images/historyBorderRadius.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/historyBorderRadius.png -------------------------------------------------------------------------------- /images/ledgerNanoS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/ledgerNanoS.png -------------------------------------------------------------------------------- /images/ledgerNanoSPlus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/ledgerNanoSPlus.png -------------------------------------------------------------------------------- /images/ledgerNanoX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/ledgerNanoX.png -------------------------------------------------------------------------------- /images/ledgerStax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/ledgerStax.png -------------------------------------------------------------------------------- /images/lightning-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/lightning-white.png -------------------------------------------------------------------------------- /images/lightning-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/lightning-white@2x.png -------------------------------------------------------------------------------- /images/lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/lightning.png -------------------------------------------------------------------------------- /images/lightning@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/lightning@2x.png -------------------------------------------------------------------------------- /images/local-node-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/local-node-full.png -------------------------------------------------------------------------------- /images/local-node-full@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/local-node-full@2x.png -------------------------------------------------------------------------------- /images/local-node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/local-node.png -------------------------------------------------------------------------------- /images/local-node@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/local-node@2x.png -------------------------------------------------------------------------------- /images/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/logout.png -------------------------------------------------------------------------------- /images/logout@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/logout@2x.png -------------------------------------------------------------------------------- /images/menuButtonGradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/menuButtonGradient.png -------------------------------------------------------------------------------- /images/merchant/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/merchant/arrow_right.png -------------------------------------------------------------------------------- /images/merchant/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/merchant/bg.png -------------------------------------------------------------------------------- /images/merchant/input_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/merchant/input_box.png -------------------------------------------------------------------------------- /images/middlePanelShadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/middlePanelShadow.png -------------------------------------------------------------------------------- /images/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/miningxmr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/miningxmr.png -------------------------------------------------------------------------------- /images/miningxmr@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/miningxmr@2x.png -------------------------------------------------------------------------------- /images/monero-vector.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 3 | -------------------------------------------------------------------------------- /images/moneroIcon-28x28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/moneroIcon-28x28.png -------------------------------------------------------------------------------- /images/moneroIcon-28x28@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/moneroIcon-28x28@2x.png -------------------------------------------------------------------------------- /images/moneroLogo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/moneroLogo_white.png -------------------------------------------------------------------------------- /images/nextPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/nextPage.png -------------------------------------------------------------------------------- /images/nextPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/nextPage@2x.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-mainnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-mainnet.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-mainnet@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-mainnet@2x.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-stagenet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-stagenet.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-stagenet@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-stagenet@2x.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-testnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-testnet.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-testnet@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-testnet@2x.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-trezor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-trezor.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-trezor@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-trezor@2x.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-view-only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-view-only.png -------------------------------------------------------------------------------- /images/open-wallet-from-file-view-only@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file-view-only@2x.png -------------------------------------------------------------------------------- /images/open-wallet-from-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file.png -------------------------------------------------------------------------------- /images/open-wallet-from-file@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/open-wallet-from-file@2x.png -------------------------------------------------------------------------------- /images/prevMonth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/prevMonth.png -------------------------------------------------------------------------------- /images/prevMonth@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/prevMonth@2x.png -------------------------------------------------------------------------------- /images/remote-node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/remote-node.png -------------------------------------------------------------------------------- /images/remote-node@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/remote-node@2x.png -------------------------------------------------------------------------------- /images/resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/resize.png -------------------------------------------------------------------------------- /images/resize@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/resize@2x.png -------------------------------------------------------------------------------- /images/resizeHovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/resizeHovered.png -------------------------------------------------------------------------------- /images/resizeHovered@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/resizeHovered@2x.png -------------------------------------------------------------------------------- /images/restore-wallet-from-hardware.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/restore-wallet-from-hardware.png -------------------------------------------------------------------------------- /images/restore-wallet-from-hardware@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/restore-wallet-from-hardware@2x.png -------------------------------------------------------------------------------- /images/restore-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/restore-wallet.png -------------------------------------------------------------------------------- /images/restore-wallet@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/restore-wallet@2x.png -------------------------------------------------------------------------------- /images/right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/rightArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/rightArrow.png -------------------------------------------------------------------------------- /images/rightArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/rightArrow@2x.png -------------------------------------------------------------------------------- /images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/success.png -------------------------------------------------------------------------------- /images/success@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/success@2x.png -------------------------------------------------------------------------------- /images/tails-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/tails-grey.png -------------------------------------------------------------------------------- /images/themes/white/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /images/themes/white/fullscreen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /images/themes/white/leftPanelBg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/themes/white/leftPanelBg.jpg -------------------------------------------------------------------------------- /images/themes/white/middlePanelBg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/themes/white/middlePanelBg.jpg -------------------------------------------------------------------------------- /images/themes/white/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/themes/white/titlebarLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/themes/white/titlebarLogo.png -------------------------------------------------------------------------------- /images/themes/white/titlebarLogo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/themes/white/titlebarLogo@2x.png -------------------------------------------------------------------------------- /images/tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/tip.png -------------------------------------------------------------------------------- /images/titlebarLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/titlebarLogo.png -------------------------------------------------------------------------------- /images/titlebarLogo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/titlebarLogo@2x.png -------------------------------------------------------------------------------- /images/trezor3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/trezor3.png -------------------------------------------------------------------------------- /images/trezor5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/trezor5.png -------------------------------------------------------------------------------- /images/trezorT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/trezorT.png -------------------------------------------------------------------------------- /images/trezorT@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/trezorT@2x.png -------------------------------------------------------------------------------- /images/uncheckedIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/uncheckedIcon.png -------------------------------------------------------------------------------- /images/uncheckedIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/uncheckedIcon@2x.png -------------------------------------------------------------------------------- /images/verify-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/verify-white.png -------------------------------------------------------------------------------- /images/verify-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/verify-white@2x.png -------------------------------------------------------------------------------- /images/verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/verify.png -------------------------------------------------------------------------------- /images/verify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/verify@2x.png -------------------------------------------------------------------------------- /images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/warning.png -------------------------------------------------------------------------------- /images/warning@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/warning@2x.png -------------------------------------------------------------------------------- /images/whatIsIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/whatIsIcon.png -------------------------------------------------------------------------------- /images/whatIsIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/whatIsIcon@2x.png -------------------------------------------------------------------------------- /images/whiteDropIndicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/whiteDropIndicator.png -------------------------------------------------------------------------------- /images/whiteDropIndicator@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/whiteDropIndicator@2x.png -------------------------------------------------------------------------------- /images/world-flags-globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/world-flags-globe.png -------------------------------------------------------------------------------- /images/write-down-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/write-down-white.png -------------------------------------------------------------------------------- /images/write-down-white@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/write-down-white@2x.png -------------------------------------------------------------------------------- /images/write-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/write-down.png -------------------------------------------------------------------------------- /images/write-down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/images/write-down@2x.png -------------------------------------------------------------------------------- /installers/windows/.gitignore: -------------------------------------------------------------------------------- 1 | # The subdirectory with the individual GUI Wallet files 2 | bin/ 3 | 4 | # The subdirectory with the generated installer "mysetup.exe" 5 | Output/ 6 | -------------------------------------------------------------------------------- /installers/windows/Deterministic.md: -------------------------------------------------------------------------------- 1 | # Building the Installer Deterministically 2 | 3 | This file contains info about building the Windows installer deterministically, i.e. how different people on different Windows machines or VMs can build it and arrive at a result that is bit-for-bit identical. This approach is also known as *reproducible builds*, see e.g. [this Wikipedia article](https://en.wikipedia.org/wiki/Reproducible_builds). 4 | 5 | The steps to build the Windows installer deterministically by a group of people are the following (for some details about the build process in general see `README.md`): 6 | 7 | * Agree on a particular version of Inno Setup, and everybody install that 8 | * Get the zip file for the Windows GUI wallet and unpack it, plus make sure / check that the file timestamps are preserved, i.e. upacked timestamp = timestamp in zip file 9 | * Build using Inno Setup and the `Monero.iss` script file 10 | * Success: All people arrive at a bit-for-bit identical installer .exe file, which they can verify by calculating and exchanging SHA256 hashes 11 | 12 | Some background info why this process is relatively simple: 13 | 14 | The tool used to build the Windows installer, Inno Setup, avoids many issues that make reproducible builds very challenging with many other compilers and similar tools: It does not store current date and time in the installer .exe file, and it does not seem to depend on the Windows version it runs on (tried with Windows 7 and two different editions of Windows 10), nor on the locale and display language. 15 | 16 | So fortunately no complicated things as faked current system time or use of VMs with exactly prescribed versions of Windows are necessary. 17 | 18 | The version of Inno Setup **is** important however: People wanting to reproducibly build the installer must agree on a particular version to use. This should not be hard to do however. 19 | 20 | Also important are the **timestamps** of the source files because they go into the installer file, to be restored at install time. 21 | 22 | You would think timestamp preservation is no problem when unpacking the zip archive with the files for the Windows GUI wallet from getmonero.org, but if you use the zip folder unpack functionality of the Windows 7 GUI, the files get the current date, **not** the file recorded in the zip file. (The Windows 10 GUI seems better here, and also the 7zip app.) 23 | 24 | In any case, after unpacking, check the file dates in the `bin` directory where the installer script looks for them with the dates of the files in the zip file: They must be identical. 25 | 26 | Note that the the following line in `Monero.iss` is also important regarding file timestamps: 27 | 28 | TimeStampsInUTC=yes 29 | 30 | Without this line the **timezone** of the machine used to build the installer would matter, with different timezones leading to different installer files. 31 | -------------------------------------------------------------------------------- /installers/windows/FinishImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/installers/windows/FinishImage.bmp -------------------------------------------------------------------------------- /installers/windows/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2024, The Monero Project 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its contributors 16 | may be used to endorse or promote products derived from this software without 17 | specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | Parts of the project are originally copyright (c) 2012-2013 The Cryptonote 31 | developers 32 | -------------------------------------------------------------------------------- /installers/windows/README.md: -------------------------------------------------------------------------------- 1 | # Monero GUI Wallet Windows Installer # 2 | 3 | Copyright (c) 2017-2024, The Monero Project 4 | 5 | ## Introduction ## 6 | 7 | This is a *Inno Setup* script `Monero.iss` plus some related files 8 | that allows you to build a standalone Windows installer (.exe) for 9 | the GUI wallet that comes with the Fluorine Fermi release of Monero. 10 | 11 | This turns the GUI wallet into a more or less standard Windows program, 12 | by default installed into a subdirectory of `C:\Program Files`, a 13 | program group with some icons in the *Start* menu, and automatic 14 | uninstall support. It helps lowering the "barrier to entry" 15 | somewhat, especially for less technically experienced users of 16 | Monero. 17 | 18 | As the setup script in file [Monero.iss](Monero.iss) has to list many 19 | files and directories of the GUI wallet package to install by name, 20 | this version of the script only works with exactly the GUI wallet 21 | for Monero release *Fluorine Fermi* that you find on 22 | [the official download page](https://getmonero.org/downloads/). 23 | 24 | It should however be easy to modify the script for future 25 | versions of the GUI wallet. 26 | 27 | ## License ## 28 | 29 | See [LICENSE](LICENSE). 30 | 31 | ## Building ## 32 | 33 | You can only build on Windows, and the result is always a 34 | Windows .exe file that can act as a standalone installer for the 35 | GUI wallet. 36 | 37 | Note that the installer build process is now reproducible / deterministic. For details check the file [Deterministic.md](Deterministic.md). 38 | 39 | The build steps in detail: 40 | 41 | 1. Install *Inno Setup*. You can get it from [here](http://www.jrsoftware.org/isdl.php) 42 | 2. Get the Inno Setup script plus related files by cloning the whole [monero-gui GitHub repository](https://github.com/monero-project/monero-gui); you will only need the files in the installer directory `installers\windows` however. 43 | 3. The setup script is written to take the GUI wallet files from a subdirectory named `bin`; so create `installers\windows\bin`, get the zip file of the GUI wallet from [here](https://getmonero.org/downloads/), unpack it somewhere, and copy all the files and subdirectories in the single subdirectory there (currently named `monero-gui-0.18.0.0`) to this `bin` subdirectory 44 | 4. Start Inno Setup, load `Monero.iss` and compile it 45 | 5. The result i.e. the finished installer will be the file `mysetup.exe` in the `installers\windows\Output` subdirectory 46 | 47 | -------------------------------------------------------------------------------- /installers/windows/WelcomeImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/installers/windows/WelcomeImage.bmp -------------------------------------------------------------------------------- /installers/windows/WizardSmallImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/installers/windows/WizardSmallImage.bmp -------------------------------------------------------------------------------- /installers/windows/monero-daemon.bat: -------------------------------------------------------------------------------- 1 | REM Execute the Monero daemon and then stay with window open after it exits 2 | "C:\Program Files\Monero Core\monerod.exe" 3 | PAUSE 4 | -------------------------------------------------------------------------------- /js/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | qt5_add_resources(RESOURCE_FILES *.js) 2 | -------------------------------------------------------------------------------- /js/Windows.js: -------------------------------------------------------------------------------- 1 | var flagsCustomDecorationsBase = (Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowSystemMenuHint | Qt.Window); 2 | var flagsCustomDecorations = isWindows ? (flagsCustomDecorationsBase | Qt.WindowMinimizeButtonHint) : flagsCustomDecorationsBase; 3 | var flags = (Qt.WindowSystemMenuHint | Qt.Window | Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint | Qt.WindowMaximizeButtonHint | Qt.WindowFullscreenButtonHint); 4 | 5 | /** 6 | * Toggles window decorations 7 | * @param {bool} custom - toggle decorations 8 | */ 9 | function setCustomWindowDecorations(custom) { 10 | // save x,y positions, because we need to hide/show the window 11 | var x = appWindow.x 12 | var y = appWindow.y 13 | if (x < 0) x = 0 14 | if (y < 0) y = 0 15 | 16 | // Update persistentSettings 17 | persistentSettings.customDecorations = custom; 18 | 19 | titleBar.visible = custom; 20 | 21 | if (custom) { 22 | appWindow.flags = flagsCustomDecorations; 23 | } else { 24 | appWindow.flags = flags; 25 | } 26 | 27 | // Reset window 28 | appWindow.hide() 29 | appWindow.x = x 30 | appWindow.y = y 31 | appWindow.show() 32 | } 33 | -------------------------------------------------------------------------------- /lang/flags/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/bd.png -------------------------------------------------------------------------------- /lang/flags/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/bg.png -------------------------------------------------------------------------------- /lang/flags/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/br.png -------------------------------------------------------------------------------- /lang/flags/catalonia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/catalonia.png -------------------------------------------------------------------------------- /lang/flags/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/cn.png -------------------------------------------------------------------------------- /lang/flags/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/cz.png -------------------------------------------------------------------------------- /lang/flags/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/de.png -------------------------------------------------------------------------------- /lang/flags/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/dk.png -------------------------------------------------------------------------------- /lang/flags/eg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/eg.png -------------------------------------------------------------------------------- /lang/flags/el.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/el.png -------------------------------------------------------------------------------- /lang/flags/eo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/eo.png -------------------------------------------------------------------------------- /lang/flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/es.png -------------------------------------------------------------------------------- /lang/flags/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/fi.png -------------------------------------------------------------------------------- /lang/flags/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/fr.png -------------------------------------------------------------------------------- /lang/flags/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/gb.png -------------------------------------------------------------------------------- /lang/flags/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/hr.png -------------------------------------------------------------------------------- /lang/flags/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/hu.png -------------------------------------------------------------------------------- /lang/flags/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/id.png -------------------------------------------------------------------------------- /lang/flags/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/il.png -------------------------------------------------------------------------------- /lang/flags/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/in.png -------------------------------------------------------------------------------- /lang/flags/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/ir.png -------------------------------------------------------------------------------- /lang/flags/irl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/irl.png -------------------------------------------------------------------------------- /lang/flags/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/is.png -------------------------------------------------------------------------------- /lang/flags/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/it.png -------------------------------------------------------------------------------- /lang/flags/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/jp.png -------------------------------------------------------------------------------- /lang/flags/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/kr.png -------------------------------------------------------------------------------- /lang/flags/ku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/ku.png -------------------------------------------------------------------------------- /lang/flags/lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/lt.png -------------------------------------------------------------------------------- /lang/flags/nb_NO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/nb_NO.png -------------------------------------------------------------------------------- /lang/flags/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/nl.png -------------------------------------------------------------------------------- /lang/flags/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/pk.png -------------------------------------------------------------------------------- /lang/flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/pl.png -------------------------------------------------------------------------------- /lang/flags/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/ps.png -------------------------------------------------------------------------------- /lang/flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/pt.png -------------------------------------------------------------------------------- /lang/flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/ro.png -------------------------------------------------------------------------------- /lang/flags/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/rs.png -------------------------------------------------------------------------------- /lang/flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/ru.png -------------------------------------------------------------------------------- /lang/flags/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/se.png -------------------------------------------------------------------------------- /lang/flags/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/si.png -------------------------------------------------------------------------------- /lang/flags/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/sk.png -------------------------------------------------------------------------------- /lang/flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/tr.png -------------------------------------------------------------------------------- /lang/flags/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/tw.png -------------------------------------------------------------------------------- /lang/flags/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/ua.png -------------------------------------------------------------------------------- /lang/flags/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/us.png -------------------------------------------------------------------------------- /lang/flags/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/vi.png -------------------------------------------------------------------------------- /lang/flags/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monero-project/monero-gui/4e9b0ae000b702a7fbdc4770869a48480aee2cc3/lang/flags/za.png -------------------------------------------------------------------------------- /pages/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | qt5_add_resources(RESOURCE_FILES *.qrc) 2 | -------------------------------------------------------------------------------- /pages/merchant/MerchantCheckbox.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Layouts 1.1 3 | import QtGraphicalEffects 1.0 4 | 5 | import "../../components" as MoneroComponents 6 | 7 | Item { 8 | id: root 9 | property bool checked: false; 10 | property alias text: content.text 11 | signal changed; 12 | 13 | width: checkBoxLayout.width 14 | height: 22 15 | 16 | RowLayout { 17 | id: checkBoxLayout 18 | spacing: 10 19 | 20 | Item { 21 | height: root.height 22 | width: root.height 23 | Rectangle { 24 | id: checkbox 25 | anchors.fill: parent 26 | radius: 5 27 | 28 | Image { 29 | id: imageChecked 30 | visible: root.checked 31 | anchors.centerIn: parent 32 | source: "qrc:///images/uncheckedIcon.png" 33 | } 34 | } 35 | DropShadow { 36 | anchors.fill: source 37 | cached: true 38 | horizontalOffset: 3 39 | verticalOffset: 3 40 | radius: 8.0 41 | samples: 16 42 | color: "#20000000" 43 | smooth: true 44 | source: checkbox 45 | } 46 | } 47 | MoneroComponents.TextPlain { 48 | id: content 49 | font.pixelSize: 14 50 | font.bold: false 51 | color: "white" 52 | text: "" 53 | themeTransition: false 54 | } 55 | } 56 | MouseArea { 57 | anchors.fill: parent 58 | hoverEnabled: true 59 | 60 | cursorShape: Qt.PointingHandCursor 61 | onClicked: { 62 | root.checked = !root.checked; 63 | changed(); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | [Controls] 2 | Style=Desktop 3 | -------------------------------------------------------------------------------- /share/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LSMinimumSystemVersion 6 | 10.10.0 7 | 8 | NSPrincipalClass 9 | NSApplication 10 | 11 | CFBundleIconFile 12 | appicon.icns 13 | 14 | CFBundlePackageType 15 | APPL 16 | 17 | CFBundleSignature 18 | ???? 19 | 20 | CFBundleExecutable 21 | monero-wallet-gui 22 | 23 | CFBundleName 24 | Monero GUI 25 | 26 | NSHumanReadableCopyright 27 | Copyright © 2014-2020 The Monero Project 28 | 29 | CFBundleIdentifier 30 | org.monero-project.monero-wallet-gui 31 | 32 | CFBundleVersion 33 | @VERSION_LONG@ 34 | 35 | CFBundleShortVersionString 36 | @VERSION@ 37 | 38 | NSSupportsAutomaticGraphicsSwitching 39 | 40 | 41 | NSRequiresAquaSystemAppearance 42 | True 43 | 44 | CFBundleURLTypes 45 | 46 | 47 | CFBundleURLName 48 | monero Handler 49 | CFBundleURLSchemes 50 | 51 | monero 52 | 53 | 54 | 55 | CFBundleURLName 56 | moneroseed Handler 57 | CFBundleURLSchemes 58 | 59 | moneroseed 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /share/org.getmonero.Monero.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Monero GUI 3 | GenericName=Monero-GUI 4 | Comment=Monero GUI 5 | Exec=monero-wallet-gui 6 | Type=Application 7 | Terminal=false 8 | Categories=Network;Qt;Finance;Office; 9 | Icon=org.getmonero.Monero 10 | StartupNotify=true 11 | -------------------------------------------------------------------------------- /src/NetworkType.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #pragma once 30 | 31 | #include 32 | #include 33 | 34 | class NetworkType : public QObject 35 | { 36 | Q_OBJECT 37 | 38 | public: 39 | enum Type : uint8_t { 40 | MAINNET = Monero::MAINNET, 41 | TESTNET = Monero::TESTNET, 42 | STAGENET = Monero::STAGENET 43 | }; 44 | Q_ENUM(Type) 45 | }; 46 | -------------------------------------------------------------------------------- /src/QR-Code-scanner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(qrdecoder STATIC 2 | Decoder.cpp 3 | ) 4 | target_link_libraries(qrdecoder 5 | PUBLIC 6 | Qt5::Gui 7 | PRIVATE 8 | quirc 9 | ) 10 | 11 | if(WITH_SCANNER) 12 | add_library(qrscanner 13 | QrCodeScanner.cpp 14 | QrScanThread.cpp 15 | ) 16 | target_link_libraries(qrscanner 17 | PUBLIC 18 | Qt5::Multimedia 19 | qrdecoder 20 | ) 21 | endif() 22 | -------------------------------------------------------------------------------- /src/QR-Code-scanner/Decoder.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include 30 | 31 | struct quirc; 32 | 33 | class QrDecoder 34 | { 35 | public: 36 | QrDecoder(const QrDecoder &) = delete; 37 | QrDecoder &operator=(const QrDecoder &) = delete; 38 | 39 | QrDecoder(); 40 | ~QrDecoder(); 41 | 42 | std::vector decode(const QImage &image); 43 | 44 | private: 45 | std::vector decodeGrayscale8(const QImage &image); 46 | 47 | private: 48 | quirc *m_qr; 49 | }; 50 | -------------------------------------------------------------------------------- /src/QR-Code-scanner/QrCodeScanner.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef QRCODESCANNER_H_ 30 | #define QRCODESCANNER_H_ 31 | 32 | #include 33 | #include 34 | #include "QrScanThread.h" 35 | 36 | class QVideoProbe; 37 | class QCamera; 38 | 39 | class QrCodeScanner : public QObject 40 | { 41 | Q_OBJECT 42 | 43 | Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) 44 | 45 | public: 46 | QrCodeScanner(QObject *parent = Q_NULLPTR); 47 | ~QrCodeScanner(); 48 | void setSource(QCamera*); 49 | 50 | bool enabled() const; 51 | void setEnabled(bool enabled); 52 | 53 | public Q_SLOTS: 54 | void processFrame(QVideoFrame); 55 | 56 | Q_SIGNALS: 57 | void enabledChanged(); 58 | 59 | void decoded(const QString &data); 60 | void notifyError(const QString &error, bool warning = false); 61 | 62 | protected: 63 | void timerEvent(QTimerEvent *); 64 | QrScanThread *m_thread; 65 | int m_processTimerId; 66 | int m_processInterval; 67 | int m_enabled; 68 | QVideoFrame m_curFrame; 69 | QVideoProbe *m_probe; 70 | }; 71 | 72 | #endif 73 | 74 | -------------------------------------------------------------------------------- /src/QR-Code-scanner/QrScanThread.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef _QRSCANTHREAD_H_ 30 | #define _QRSCANTHREAD_H_ 31 | 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | 39 | #include "Decoder.h" 40 | 41 | class QrScanThread : public QThread 42 | { 43 | Q_OBJECT 44 | 45 | public: 46 | QrScanThread(QObject *parent = Q_NULLPTR); 47 | void addFrame(const QVideoFrame &frame); 48 | virtual void stop(); 49 | 50 | Q_SIGNALS: 51 | void decoded(const QString &data); 52 | void notifyError(const QString &error, bool warning = false); 53 | 54 | protected: 55 | virtual void run(); 56 | void processVideoFrame(const QVideoFrame &); 57 | void processQImage(const QImage &); 58 | 59 | private: 60 | QrDecoder m_decoder; 61 | bool m_running; 62 | QMutex m_mutex; 63 | QWaitCondition m_waitCondition; 64 | QList m_queue; 65 | }; 66 | #endif 67 | -------------------------------------------------------------------------------- /src/TranslationManager.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef TRANSLATIONMANAGER_H 30 | #define TRANSLATIONMANAGER_H 31 | 32 | #include 33 | 34 | class QTranslator; 35 | class TranslationManager : public QObject 36 | { 37 | Q_OBJECT 38 | Q_PROPERTY(QString emptyString READ emptyString NOTIFY languageChanged) 39 | public: 40 | Q_INVOKABLE bool setLanguage(const QString &language); 41 | static TranslationManager *instance(); 42 | 43 | QString emptyString(); 44 | 45 | signals: 46 | void languageChanged(); 47 | 48 | private: 49 | explicit TranslationManager(QObject *parent = 0); 50 | 51 | private: 52 | static TranslationManager * m_instance; 53 | QTranslator * m_translator; 54 | 55 | }; 56 | 57 | #endif // TRANSLATIONMANAGER_H 58 | -------------------------------------------------------------------------------- /src/libwalletqt/PassphraseHelper.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include "PassphraseHelper.h" 30 | #include 31 | #include 32 | 33 | Monero::optional PassphraseHelper::onDevicePassphraseRequest(bool & on_device) 34 | { 35 | qDebug() << __FUNCTION__; 36 | QMutexLocker locker(&m_mutex_pass); 37 | m_passphrase_on_device = true; 38 | m_passphrase_abort = false; 39 | 40 | if (m_prompter != nullptr){ 41 | m_prompter->onWalletPassphraseNeeded(on_device); 42 | } 43 | 44 | m_cond_pass.wait(&m_mutex_pass); 45 | 46 | if (m_passphrase_abort) 47 | { 48 | throw std::runtime_error("Passphrase entry abort"); 49 | } 50 | 51 | on_device = m_passphrase_on_device; 52 | if (!on_device) { 53 | auto tmpPass = m_passphrase.toStdString(); 54 | m_passphrase = QString(); 55 | return Monero::optional(tmpPass); 56 | } else { 57 | return Monero::optional(); 58 | } 59 | } 60 | 61 | void PassphraseHelper::onPassphraseEntered(const QString &passphrase, bool enter_on_device, bool entry_abort) 62 | { 63 | qDebug() << __FUNCTION__; 64 | QMutexLocker locker(&m_mutex_pass); 65 | m_passphrase = passphrase; 66 | m_passphrase_abort = entry_abort; 67 | m_passphrase_on_device = enter_on_device; 68 | 69 | m_cond_pass.wakeAll(); 70 | } 71 | -------------------------------------------------------------------------------- /src/libwalletqt/QRCodeImageProvider.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include "QrCode.hpp" 30 | 31 | #include "QRCodeImageProvider.h" 32 | 33 | QImage QRCodeImageProvider::genQrImage(const QString &id, QSize *size) 34 | { 35 | using namespace qrcodegen; 36 | 37 | QrCode qrcode = QrCode::encodeText(id.toStdString().c_str(), QrCode::Ecc::MEDIUM); 38 | unsigned int black = 0; 39 | unsigned int white = 1; 40 | unsigned int borderSize = 4; 41 | unsigned int imageSize = qrcode.getSize() + (2 * borderSize); 42 | QImage img = QImage(imageSize, imageSize, QImage::Format_Mono); 43 | 44 | for (unsigned int y = 0; y < imageSize; ++y) 45 | for (unsigned int x = 0; x < imageSize; ++x) 46 | if ((x < borderSize) || (x >= imageSize - borderSize) || (y < borderSize) || (y >= imageSize - borderSize)) 47 | img.setPixel(x, y, white); 48 | else 49 | img.setPixel(x, y, qrcode.getModule(x - borderSize, y - borderSize) ? black : white); 50 | if (size) 51 | *size = QSize(imageSize, imageSize); 52 | 53 | return img; 54 | } 55 | 56 | QImage QRCodeImageProvider::requestImage(const QString &id, QSize *size, const QSize &/* requestedSize */) 57 | { 58 | return genQrImage(id, size); 59 | } 60 | -------------------------------------------------------------------------------- /src/libwalletqt/QRCodeImageProvider.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include 30 | #include 31 | 32 | class QRCodeImageProvider: public QQuickImageProvider 33 | { 34 | public: 35 | QRCodeImageProvider(): QQuickImageProvider(QQuickImageProvider::Image) {} 36 | 37 | QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize); 38 | static QImage genQrImage(const QString &id, QSize *size); 39 | }; 40 | 41 | -------------------------------------------------------------------------------- /src/libwalletqt/Subaddress.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef SUBADDRESS_H 30 | #define SUBADDRESS_H 31 | 32 | #include 33 | 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | class Subaddress : public QObject 41 | { 42 | Q_OBJECT 43 | public: 44 | Q_INVOKABLE void getAll() const; 45 | Q_INVOKABLE bool getRow(int index, std::function callback) const; 46 | Q_INVOKABLE void addRow(quint32 accountIndex, const QString &label) const; 47 | Q_INVOKABLE void setLabel(quint32 accountIndex, quint32 addressIndex, const QString &label) const; 48 | Q_INVOKABLE void refresh(quint32 accountIndex) const; 49 | quint64 count() const; 50 | 51 | signals: 52 | void refreshStarted() const; 53 | void refreshFinished() const; 54 | 55 | public slots: 56 | 57 | private: 58 | explicit Subaddress(Monero::Subaddress * subaddressImpl, QObject *parent); 59 | friend class Wallet; 60 | mutable QReadWriteLock m_lock; 61 | Monero::Subaddress * m_subaddressImpl; 62 | mutable QList m_rows; 63 | }; 64 | 65 | #endif // SUBADDRESS_H 66 | -------------------------------------------------------------------------------- /src/libwalletqt/SubaddressAccount.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef SUBADDRESSACCOUNT_H 30 | #define SUBADDRESSACCOUNT_H 31 | 32 | #include 33 | 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | class SubaddressAccount : public QObject 41 | { 42 | Q_OBJECT 43 | public: 44 | Q_INVOKABLE void getAll() const; 45 | Q_INVOKABLE bool getRow(int index, std::function callback) const; 46 | Q_INVOKABLE void addRow(const QString &label) const; 47 | Q_INVOKABLE void setLabel(quint32 accountIndex, const QString &label) const; 48 | Q_INVOKABLE void refresh() const; 49 | quint64 count() const; 50 | 51 | signals: 52 | void refreshStarted() const; 53 | void refreshFinished() const; 54 | 55 | public slots: 56 | 57 | private: 58 | explicit SubaddressAccount(Monero::SubaddressAccount * subaddressAccountImpl, QObject *parent); 59 | friend class Wallet; 60 | mutable QReadWriteLock m_lock; 61 | Monero::SubaddressAccount * m_subaddressAccountImpl; 62 | mutable QList m_rows; 63 | }; 64 | 65 | #endif // SUBADDRESSACCOUNT_H 66 | -------------------------------------------------------------------------------- /src/libwalletqt/Transfer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef TRANSFER_H 30 | #define TRANSFER_H 31 | 32 | #include 33 | #include 34 | 35 | class Transfer : public QObject 36 | { 37 | Q_OBJECT 38 | Q_PROPERTY(quint64 amount READ amount) 39 | Q_PROPERTY(QString address READ address) 40 | private: 41 | explicit Transfer(uint64_t _amount, const QString &_address, QObject *parent = 0): QObject(parent), m_amount(_amount), m_address(_address) {}; 42 | private: 43 | friend class TransactionInfo; 44 | quint64 m_amount; 45 | QString m_address; 46 | public: 47 | quint64 amount() const { return m_amount; } 48 | QString address() const { return m_address; } 49 | 50 | }; 51 | 52 | #endif // TRANSACTIONINFO_H 53 | -------------------------------------------------------------------------------- /src/libwalletqt/WalletListenerImpl.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef MONERO_GUI_WALLETLISTENERIMPL_H 30 | #define MONERO_GUI_WALLETLISTENERIMPL_H 31 | 32 | #include "wallet/api/wallet2_api.h" 33 | #include "PassphraseHelper.h" 34 | 35 | class Wallet; 36 | 37 | class WalletListenerImpl : public Monero::WalletListener, public PassphraseReceiver 38 | { 39 | public: 40 | WalletListenerImpl(Wallet * w); 41 | 42 | virtual void moneySpent(const std::string &txId, uint64_t amount) override; 43 | 44 | virtual void moneyReceived(const std::string &txId, uint64_t amount) override; 45 | 46 | virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount) override; 47 | 48 | virtual void newBlock(uint64_t height) override; 49 | 50 | virtual void updated() override; 51 | 52 | // called when wallet refreshed by background thread or explicitly 53 | virtual void refreshed() override; 54 | 55 | virtual void onDeviceButtonRequest(uint64_t code) override; 56 | 57 | virtual void onDeviceButtonPressed() override; 58 | 59 | virtual void onPassphraseEntered(const QString &passphrase, bool enter_on_device, bool entry_abort) override; 60 | 61 | virtual Monero::optional onDevicePassphraseRequest(bool & on_device) override; 62 | 63 | private: 64 | Wallet * m_wallet; 65 | PassphraseHelper m_phelper; 66 | }; 67 | 68 | #endif //MONERO_GUI_WALLETLISTENERIMPL_H 69 | -------------------------------------------------------------------------------- /src/main/Logger.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #pragma once 30 | 31 | #include 32 | #include 33 | #include 34 | 35 | class Logger : public QObject 36 | { 37 | Q_OBJECT 38 | Q_PROPERTY(QString logFilePath READ logFilePath NOTIFY logFilePathChanged) 39 | 40 | public: 41 | Logger(QCoreApplication &parent, QString userDefinedLogFilePath); 42 | 43 | Q_INVOKABLE void resetLogFilePath(bool portable); 44 | QString logFilePath() const; 45 | 46 | signals: 47 | void logFilePathChanged() const; 48 | 49 | private: 50 | const std::string m_applicationFilePath; 51 | QString m_logFilePath; 52 | const QString m_userDefinedLogFilePath; 53 | }; 54 | -------------------------------------------------------------------------------- /src/main/MainApp.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include "MainApp.h" 30 | #include 31 | 32 | bool MainApp::event (QEvent *event) 33 | { 34 | // Catch application exit event and signal to qml app to handle exit 35 | if(event->type() == QEvent::Close) { 36 | event->ignore(); 37 | emit closing(); 38 | return true; 39 | } 40 | 41 | // Pass unhandled events to base class 42 | return QApplication::event(event); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/MainApp.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef MAINAPP_H 30 | #define MAINAPP_H 31 | #include 32 | 33 | class MainApp : public QApplication 34 | { 35 | Q_OBJECT 36 | public: 37 | MainApp(int &argc, char** argv) : QApplication(argc, argv) {}; 38 | private: 39 | bool event(QEvent *e); 40 | signals: 41 | void closing(); 42 | }; 43 | 44 | #endif // MAINAPP_H 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/main/clipboardAdapter.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include "clipboardAdapter.h" 30 | 31 | clipboardAdapter::clipboardAdapter(QObject *parent) : 32 | QObject(parent) 33 | { 34 | m_pClipboard = QGuiApplication::clipboard(); 35 | } 36 | 37 | void clipboardAdapter::setText(const QString &text) { 38 | m_pClipboard->setText(text, QClipboard::Clipboard); 39 | m_pClipboard->setText(text, QClipboard::Selection); 40 | } 41 | 42 | QString clipboardAdapter::text() const { 43 | return m_pClipboard->text(); 44 | } 45 | -------------------------------------------------------------------------------- /src/main/clipboardAdapter.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef CLIPBOARDADAPTER_H 30 | #define CLIPBOARDADAPTER_H 31 | 32 | #include 33 | #include 34 | #include 35 | 36 | class clipboardAdapter : public QObject 37 | { 38 | Q_OBJECT 39 | public: 40 | explicit clipboardAdapter(QObject *parent = 0); 41 | Q_INVOKABLE void setText(const QString &text); 42 | Q_INVOKABLE QString text() const; 43 | 44 | private: 45 | QClipboard *m_pClipboard; 46 | }; 47 | 48 | #endif // CLIPBOARDADAPTER_H 49 | -------------------------------------------------------------------------------- /src/main/filter.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef FILTER_H 30 | #define FILTER_H 31 | 32 | #include 33 | 34 | class filter : public QObject 35 | { 36 | Q_OBJECT 37 | private: 38 | bool m_tabPressed; 39 | bool m_backtabPressed; 40 | public: 41 | explicit filter(QObject *parent = 0); 42 | 43 | protected: 44 | bool eventFilter(QObject *obj, QEvent *ev); 45 | 46 | signals: 47 | void sequencePressed(const QVariant &o, const QVariant &seq); 48 | void sequenceReleased(const QVariant &o, const QVariant &seq); 49 | void mousePressed(const QVariant &o, const QVariant &x, const QVariant &y); 50 | void mouseReleased(const QVariant &o, const QVariant &x, const QVariant &y); 51 | void userActivity(); 52 | void uriHandler(const QUrl &url); 53 | }; 54 | 55 | #endif // FILTER_H 56 | -------------------------------------------------------------------------------- /src/main/oscursor.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #include "oscursor.h" 30 | #include 31 | OSCursor::OSCursor(QObject *parent) 32 | : QObject(parent) 33 | { 34 | } 35 | QPoint OSCursor::getPosition() const 36 | { 37 | return QCursor::pos(); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/oscursor.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef OSCURSOR_H 30 | #define OSCURSOR_H 31 | 32 | 33 | #include 34 | #include 35 | #include 36 | class OSCursor : public QObject 37 | { 38 | Q_OBJECT 39 | //QObject(); 40 | public: 41 | //QObject(QObject* aParent); 42 | //OSCursor(); 43 | explicit OSCursor(QObject *parent = 0); 44 | Q_INVOKABLE QPoint getPosition() const; 45 | }; 46 | 47 | //OSCursor::OSCursor() : QObject(NULL){ 48 | 49 | //} 50 | 51 | 52 | //Q_DECLARE_METATYPE(OSCursor) 53 | #endif // OSCURSOR_H 54 | -------------------------------------------------------------------------------- /src/main/oshelper.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef OSHELPER_H 30 | #define OSHELPER_H 31 | 32 | #include 33 | #include 34 | #include 35 | /** 36 | * @brief The OSHelper class - exports to QML some OS-related functions 37 | */ 38 | class OSHelper : public QObject 39 | { 40 | Q_OBJECT 41 | Q_PROPERTY(bool installed READ installed CONSTANT); 42 | 43 | public: 44 | explicit OSHelper(QObject *parent = 0); 45 | 46 | Q_INVOKABLE void createDesktopEntry() const; 47 | Q_INVOKABLE QString downloadLocation() const; 48 | Q_INVOKABLE QList grabQrCodesFromScreen() const; 49 | Q_INVOKABLE bool openFile(const QString &filePath) const; 50 | Q_INVOKABLE bool openContainingFolder(const QString &filePath) const; 51 | Q_INVOKABLE QString openSaveFileDialog(const QString &title, const QString &folder, const QString &filename) const; 52 | Q_INVOKABLE QString temporaryFilename() const; 53 | Q_INVOKABLE QString temporaryPath() const; 54 | Q_INVOKABLE bool removeTemporaryWallet(const QString &walletName) const; 55 | Q_INVOKABLE bool isCapsLock() const; 56 | Q_INVOKABLE quint8 getNetworkTypeFromFile(const QString &keysPath) const; 57 | Q_INVOKABLE void openSeedTemplate() const; 58 | 59 | static std::pair getNetworkTypeAndAddressFromFile(const QString &wallet); 60 | private: 61 | bool installed() const; 62 | 63 | signals: 64 | 65 | public slots: 66 | }; 67 | 68 | #endif // OSHELPER_H 69 | -------------------------------------------------------------------------------- /src/model/AddressBookModel.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef ADDRESSBOOKMODEL_H 30 | #define ADDRESSBOOKMODEL_H 31 | 32 | #include 33 | 34 | class AddressBook; 35 | 36 | class AddressBookModel : public QAbstractListModel 37 | { 38 | Q_OBJECT 39 | 40 | public: 41 | enum AddressBookRowRole { 42 | AddressBookRole = Qt::UserRole + 1, // for the AddressBookRow object; 43 | AddressBookAddressRole, 44 | AddressBookDescriptionRole, 45 | AddressBookPaymentIdRole, 46 | AddressBookRowIdRole, 47 | }; 48 | Q_ENUM(AddressBookRowRole) 49 | 50 | AddressBookModel(QObject *parent, AddressBook * addressBook); 51 | 52 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; 53 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 54 | Q_INVOKABLE bool deleteRow(int row); 55 | virtual QHash roleNames() const override; 56 | 57 | public slots: 58 | void startReset(); 59 | void endReset(); 60 | 61 | private: 62 | AddressBook * m_addressBook; 63 | }; 64 | 65 | #endif // ADDRESSBOOKMODEL_H 66 | -------------------------------------------------------------------------------- /src/model/SubaddressAccountModel.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef SUBADDRESSACCOUNTMODEL_H 30 | #define SUBADDRESSACCOUNTMODEL_H 31 | 32 | #include 33 | 34 | class SubaddressAccount; 35 | 36 | class SubaddressAccountModel : public QAbstractListModel 37 | { 38 | Q_OBJECT 39 | 40 | public: 41 | enum SubaddressAccountRowRole { 42 | SubaddressAccountRole = Qt::UserRole + 1, // for the SubaddressAccountRow object; 43 | SubaddressAccountAddressRole, 44 | SubaddressAccountLabelRole, 45 | SubaddressAccountBalanceRole, 46 | SubaddressAccountUnlockedBalanceRole, 47 | }; 48 | Q_ENUM(SubaddressAccountRowRole) 49 | 50 | SubaddressAccountModel(QObject *parent, SubaddressAccount *subaddressAccount); 51 | 52 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; 53 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 54 | QHash roleNames() const override; 55 | 56 | public slots: 57 | void startReset(); 58 | void endReset(); 59 | 60 | private: 61 | SubaddressAccount *m_subaddressAccount; 62 | }; 63 | 64 | #endif // SUBADDRESSACCOUNTMODEL_H 65 | -------------------------------------------------------------------------------- /src/model/SubaddressModel.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef SUBADDRESSMODEL_H 30 | #define SUBADDRESSMODEL_H 31 | 32 | #include 33 | 34 | class Subaddress; 35 | 36 | class SubaddressModel : public QAbstractListModel 37 | { 38 | Q_OBJECT 39 | 40 | public: 41 | enum SubaddressRowRole { 42 | SubaddressRole = Qt::UserRole + 1, // for the SubaddressRow object; 43 | SubaddressAddressRole, 44 | SubaddressLabelRole, 45 | }; 46 | Q_ENUM(SubaddressRowRole) 47 | 48 | SubaddressModel(QObject *parent, Subaddress *subaddress); 49 | 50 | int rowCount(const QModelIndex &parent = QModelIndex()) const override; 51 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 52 | QHash roleNames() const override; 53 | 54 | public slots: 55 | void startReset(); 56 | void endReset(); 57 | 58 | private: 59 | Subaddress *m_subaddress; 60 | }; 61 | 62 | #endif // SUBADDRESSMODEL_H 63 | -------------------------------------------------------------------------------- /src/openpgp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB_RECURSE SOURCES *.cpp) 2 | file(GLOB_RECURSE HEADERS *.h) 3 | 4 | find_library(GCRYPT_LIBRARY gcrypt REQUIRED) 5 | find_path(GCRYPT_INCLUDE_DIR gcrypt.h REQUIRED) 6 | 7 | find_library(GPG_ERROR_LIBRARY gpg-error REQUIRED) 8 | 9 | add_library(openpgp 10 | ${SOURCES} 11 | ${HEADERS}) 12 | 13 | target_include_directories(openpgp 14 | PUBLIC 15 | ${CMAKE_SOURCE_DIR}/monero/contrib/epee/include 16 | ${GCRYPT_INCLUDE_DIR}) 17 | 18 | target_link_libraries(openpgp 19 | PUBLIC 20 | ${GCRYPT_LIBRARY} 21 | ${GPG_ERROR_LIBRARY}) 22 | -------------------------------------------------------------------------------- /src/openpgp/mpi.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #pragma once 30 | 31 | #include 32 | 33 | namespace openpgp 34 | { 35 | 36 | class mpi 37 | { 38 | public: 39 | mpi(const mpi &) = delete; 40 | mpi &operator=(const mpi &) = delete; 41 | 42 | mpi(mpi &&other) 43 | : data(other.data) 44 | { 45 | other.data = nullptr; 46 | } 47 | 48 | template < 49 | typename byte_container, 50 | typename = typename std::enable_if<(sizeof(typename byte_container::value_type) == 1)>::type> 51 | mpi(const byte_container &buffer, gcry_mpi_format format = GCRYMPI_FMT_USG) 52 | : mpi(&buffer[0], buffer.size(), format) 53 | { 54 | } 55 | 56 | mpi(const void *buffer, size_t size, gcry_mpi_format format = GCRYMPI_FMT_USG) 57 | { 58 | if (gcry_mpi_scan(&data, format, buffer, size, nullptr) != GPG_ERR_NO_ERROR) 59 | { 60 | throw std::runtime_error("failed to read mpi from buffer"); 61 | } 62 | } 63 | 64 | ~mpi() 65 | { 66 | gcry_mpi_release(data); 67 | } 68 | 69 | const gcry_mpi_t &get() const 70 | { 71 | return data; 72 | } 73 | 74 | private: 75 | gcry_mpi_t data; 76 | }; 77 | 78 | } // namespace openpgp 79 | -------------------------------------------------------------------------------- /src/openpgp/s_expression.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #pragma once 30 | 31 | #include 32 | #include 33 | 34 | #include 35 | 36 | namespace openpgp 37 | { 38 | 39 | class s_expression 40 | { 41 | public: 42 | s_expression(const s_expression &) = delete; 43 | s_expression &operator=(const s_expression &) = delete; 44 | 45 | template 46 | s_expression(Args... args) 47 | { 48 | if (gcry_sexp_build(&data, nullptr, args...) != GPG_ERR_NO_ERROR) 49 | { 50 | throw std::runtime_error("failed to build S-expression"); 51 | } 52 | } 53 | 54 | s_expression(s_expression &&other) 55 | { 56 | std::swap(data, other.data); 57 | } 58 | 59 | s_expression(gcry_sexp_t data) 60 | : data(data) 61 | { 62 | } 63 | 64 | ~s_expression() 65 | { 66 | gcry_sexp_release(data); 67 | } 68 | 69 | const gcry_sexp_t &get() const 70 | { 71 | return data; 72 | } 73 | 74 | private: 75 | gcry_sexp_t data = nullptr; 76 | }; 77 | 78 | } // namespace openpgp 79 | -------------------------------------------------------------------------------- /src/qt/FutureScheduler.cpp: -------------------------------------------------------------------------------- 1 | #include "FutureScheduler.h" 2 | 3 | #include 4 | 5 | #include 6 | 7 | FutureScheduler::FutureScheduler(QObject *parent) 8 | : QObject(parent), Alive(0), Stopping(false) 9 | { 10 | static std::once_flag once; 11 | std::call_once(once, []() { 12 | QThreadPool::globalInstance()->setMaxThreadCount(4); 13 | }); 14 | } 15 | 16 | FutureScheduler::~FutureScheduler() 17 | { 18 | shutdownWaitForFinished(); 19 | } 20 | 21 | void FutureScheduler::shutdownWaitForFinished() noexcept 22 | { 23 | QMutexLocker locker(&Mutex); 24 | 25 | Stopping = true; 26 | while (Alive > 0) 27 | { 28 | Condition.wait(&Mutex); 29 | } 30 | } 31 | 32 | QPair> FutureScheduler::run(std::function function) noexcept 33 | { 34 | return execute([this, function](QFutureWatcher *) { 35 | return QtConcurrent::run([this, function] { 36 | try 37 | { 38 | function(); 39 | } 40 | catch (const std::exception &exception) 41 | { 42 | qWarning() << "Exception thrown from async function: " << exception.what(); 43 | } 44 | done(); 45 | }); 46 | }); 47 | } 48 | 49 | QPair> FutureScheduler::run(std::function function, const QJSValue &callback) 50 | { 51 | if (!callback.isCallable()) 52 | { 53 | throw std::runtime_error("js callback must be callable"); 54 | } 55 | 56 | return execute([this, function, callback](QFutureWatcher *watcher) { 57 | connect(watcher, &QFutureWatcher::finished, [watcher, callback] { 58 | QJSValue(callback).call(watcher->future().result()); 59 | }); 60 | return QtConcurrent::run([this, function] { 61 | QJSValueList result; 62 | try 63 | { 64 | result = function(); 65 | } 66 | catch (const std::exception &exception) 67 | { 68 | qWarning() << "Exception thrown from async function: " << exception.what(); 69 | } 70 | done(); 71 | return result; 72 | }); 73 | }); 74 | } 75 | 76 | bool FutureScheduler::stopping() const noexcept 77 | { 78 | return Stopping; 79 | } 80 | 81 | bool FutureScheduler::add() noexcept 82 | { 83 | QMutexLocker locker(&Mutex); 84 | 85 | if (Stopping) 86 | { 87 | return false; 88 | } 89 | 90 | ++Alive; 91 | return true; 92 | } 93 | 94 | void FutureScheduler::done() noexcept 95 | { 96 | { 97 | QMutexLocker locker(&Mutex); 98 | --Alive; 99 | } 100 | 101 | Condition.wakeAll(); 102 | } 103 | -------------------------------------------------------------------------------- /src/qt/FutureScheduler.h: -------------------------------------------------------------------------------- 1 | #ifndef FUTURE_SCHEDULER_H 2 | #define FUTURE_SCHEDULER_H 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | class FutureScheduler : public QObject 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | FutureScheduler(QObject *parent); 20 | ~FutureScheduler(); 21 | 22 | void shutdownWaitForFinished() noexcept; 23 | 24 | QPair> run(std::function function) noexcept; 25 | QPair> run(std::function function, const QJSValue &callback); 26 | bool stopping() const noexcept; 27 | 28 | private: 29 | bool add() noexcept; 30 | void done() noexcept; 31 | 32 | template 33 | QPair> execute(std::function(QFutureWatcher *)> makeFuture) noexcept 34 | { 35 | if (add()) 36 | { 37 | try 38 | { 39 | auto *watcher = new QFutureWatcher(); 40 | connect(watcher, &QFutureWatcher::finished, [watcher] { 41 | watcher->deleteLater(); 42 | }); 43 | watcher->setFuture(makeFuture(watcher)); 44 | return qMakePair(true, watcher->future()); 45 | } 46 | catch (const std::exception &exception) 47 | { 48 | qCritical() << "Failed to schedule async function: " << exception.what(); 49 | done(); 50 | } 51 | } 52 | 53 | return qMakePair(false, QFuture()); 54 | } 55 | 56 | private: 57 | size_t Alive; 58 | QWaitCondition Condition; 59 | QMutex Mutex; 60 | std::atomic Stopping; 61 | }; 62 | 63 | #endif // FUTURE_SCHEDULER_H 64 | -------------------------------------------------------------------------------- /src/qt/TailsOS.h: -------------------------------------------------------------------------------- 1 | #ifndef TAILSOS_H 2 | #define TAILSOS_H 3 | 4 | #include 5 | 6 | 7 | class TailsOS 8 | { 9 | public: 10 | TailsOS(); 11 | static bool detect(); 12 | static bool detectDataPersistence(); 13 | static bool detectDotPersistence(); 14 | 15 | static void showDataPersistenceDisabledWarning(); 16 | static void askPersistence(); 17 | static void persistXdgMime(QString filePath, QString data); 18 | 19 | static bool usePersistence; 20 | static QString tailsPathData; 21 | }; 22 | 23 | #endif // TAILSOS_H 24 | -------------------------------------------------------------------------------- /src/qt/downloader.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #pragma once 30 | 31 | #include 32 | 33 | #include "network.h" 34 | 35 | class Downloader : public QObject 36 | { 37 | Q_OBJECT 38 | Q_PROPERTY(bool active READ active NOTIFY activeChanged); 39 | Q_PROPERTY(quint64 loaded READ loaded NOTIFY loadedChanged); 40 | Q_PROPERTY(quint64 total READ total NOTIFY totalChanged); 41 | Q_PROPERTY(QString proxyAddress READ proxyAddress WRITE setProxyAddress NOTIFY proxyAddressChanged) 42 | 43 | public: 44 | Downloader(QObject *parent = nullptr); 45 | ~Downloader(); 46 | 47 | Q_INVOKABLE void cancel(); 48 | Q_INVOKABLE bool get(const QString &url, const QString &hash, const QJSValue &callback); 49 | Q_INVOKABLE bool saveToFile(const QString &path) const; 50 | 51 | signals: 52 | void activeChanged() const; 53 | void loadedChanged() const; 54 | void totalChanged() const; 55 | void proxyAddressChanged() const; 56 | 57 | private: 58 | bool active() const; 59 | quint64 loaded() const; 60 | quint64 total() const; 61 | QString proxyAddress() const; 62 | void setProxyAddress(QString address); 63 | 64 | private: 65 | bool m_active; 66 | std::string m_contents; 67 | std::shared_ptr m_httpClient; 68 | mutable QReadWriteLock m_mutex; 69 | Network m_network; 70 | QString m_proxyAddress; 71 | mutable QMutex m_proxyMutex; 72 | mutable FutureScheduler m_scheduler; 73 | }; 74 | -------------------------------------------------------------------------------- /src/qt/ipc.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef IPC_H 30 | #define IPC_H 31 | 32 | #include 33 | #include 34 | #include 35 | 36 | class IPC : public QObject 37 | { 38 | Q_OBJECT 39 | public: 40 | IPC(QObject *parent = 0) : QObject(parent) {} 41 | QFileInfo socketFile() const { return m_socketFile; } 42 | Q_INVOKABLE QString queuedCmd() { return m_queuedCmd; } 43 | void SetQueuedCmd(const QString cmdString) { m_queuedCmd = cmdString; } 44 | 45 | public slots: 46 | void bind(); 47 | void handleConnection(); 48 | bool saveCommand(QString cmdString); 49 | bool saveCommand(const QUrl &url); 50 | void parseCommand(QString cmdString); 51 | void parseCommand(const QUrl &url); 52 | void emitUriHandler(QString uriString); 53 | 54 | signals: 55 | void uriHandler(QString uriString); 56 | 57 | private: 58 | QLocalServer *m_server; 59 | QString m_queuedCmd; 60 | QFileInfo m_socketFile = QFileInfo(QString(QDir::tempPath() + "/xmr-gui_%2.sock").arg(getAccountName())); 61 | }; 62 | 63 | #endif // IPC_H 64 | -------------------------------------------------------------------------------- /src/qt/macoshelper.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef MACOSHELPER_H 30 | #define MACOSHELPER_H 31 | 32 | #include 33 | 34 | class MacOSHelper 35 | { 36 | MacOSHelper() {} 37 | 38 | public: 39 | static bool isCapsLock(); 40 | static bool openFolderAndSelectItem(const QUrl &path); 41 | static QString bundlePath(); 42 | static void disableWindowTabbing(); 43 | }; 44 | 45 | #endif //MACOSHELPER_H 46 | -------------------------------------------------------------------------------- /src/qt/updater.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #pragma once 30 | 31 | #include 32 | 33 | #include 34 | 35 | class Updater 36 | { 37 | public: 38 | Updater(); 39 | 40 | QByteArray fetchSignedHash( 41 | const QString &binaryFilename, 42 | const QByteArray &hashFromDns, 43 | QPair &signers) const; 44 | QByteArray getHash(const void *data, size_t size) const; 45 | QPair verifySignaturesAndHashSum( 46 | const QByteArray &armoredSignedHashes, 47 | const QByteArray &secondDetachedSignature, 48 | const QString &binaryFilename, 49 | const void *binaryData, 50 | size_t binarySize) const; 51 | 52 | private: 53 | QByteArray verifyParseSignedHahes( 54 | const QByteArray &armoredSignedHashes, 55 | const QByteArray &secondDetachedSignature, 56 | const QString &binaryFilename, 57 | QPair &signers) const; 58 | QString verifySignature(const QByteArray &armoredSignedMessage, QString &signer) const; 59 | QString verifySignature(const epee::span data, const openpgp::signature_rsa &signature) const; 60 | QByteArray parseShasumOutput(const QString &message, const QString &filename) const; 61 | 62 | private: 63 | std::vector m_maintainers; 64 | }; 65 | -------------------------------------------------------------------------------- /src/qt/utils.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2024, The Monero Project 2 | // 3 | // All rights reserved. 4 | // 5 | // Redistribution and use in source and binary forms, with or without modification, are 6 | // permitted provided that the following conditions are met: 7 | // 8 | // 1. Redistributions of source code must retain the above copyright notice, this list of 9 | // conditions and the following disclaimer. 10 | // 11 | // 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 | // of conditions and the following disclaimer in the documentation and/or other 13 | // materials provided with the distribution. 14 | // 15 | // 3. Neither the name of the copyright holder nor the names of its contributors may be 16 | // used to endorse or promote products derived from this software without specific 17 | // prior written permission. 18 | // 19 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 20 | // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 21 | // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 22 | // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 | // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 | // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | #ifndef UTILS_H 30 | #define UTILS_H 31 | 32 | #include 33 | #include 34 | #include 35 | 36 | bool fileExists(QString path); 37 | QByteArray fileGetContents(QString path); 38 | QByteArray fileOpen(QString path); 39 | bool fileWrite(QString path, QString data); 40 | QString getAccountName(); 41 | #ifdef Q_OS_LINUX 42 | QString xdgMime(); 43 | void registerXdgMime(); 44 | #endif 45 | const static QRegularExpression reURI = QRegularExpression("^\\w+:\\/\\/([\\w+\\-?\\-_\\-=\\-&]+)"); 46 | QString randomUserAgent(); 47 | 48 | #endif // UTILS_H 49 | -------------------------------------------------------------------------------- /src/version.js.in: -------------------------------------------------------------------------------- 1 | var GUI_VERSION_NUMBER = "@VERSION@" 2 | var GUI_VERSION_TAG = "@VERSION_TAG_GUI@"; 3 | var GUI_VERSION = GUI_VERSION_NUMBER + "-" + GUI_VERSION_TAG 4 | -------------------------------------------------------------------------------- /src/zxcvbn-c/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.ko 3 | *.obj 4 | *.elf 5 | *.gch 6 | *.pch 7 | *.lib 8 | *.a 9 | *.la 10 | *.lo 11 | *.dll 12 | *.so 13 | *.so.* 14 | *.dylib 15 | *.exe 16 | *.out 17 | *.app 18 | *.i*86 19 | *.x86_64 20 | *.hex 21 | test.cpp 22 | zxcvbn.cpp 23 | zxcvbn.dict 24 | test-*file 25 | test-*line 26 | test-*lib 27 | dictgen 28 | dict-*.h 29 | -------------------------------------------------------------------------------- /src/zxcvbn-c/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(zxcvbn STATIC zxcvbn.c) 2 | set_target_properties(zxcvbn PROPERTIES POSITION_INDEPENDENT_CODE ON) 3 | target_include_directories(zxcvbn PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) 4 | -------------------------------------------------------------------------------- /start-low-graphics-mode.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set QMLSCENE_DEVICE=softwarecontext 4 | 5 | start /b monero-wallet-gui.exe 6 | -------------------------------------------------------------------------------- /translations/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(Qt5Core REQUIRED) 2 | 3 | find_package(Qt5LinguistTools QUIET) 4 | if(NOT Qt5_LRELEASE_EXECUTABLE) 5 | find_program(Qt5_LRELEASE_EXECUTABLE lrelease REQUIRED CMAKE_FIND_ROOT_PATH_BOTH) 6 | endif() 7 | 8 | file(GLOB TS_FILES *.ts) 9 | 10 | set(QM_FILES) 11 | set(QRC_CONTENTS "") 12 | foreach(TS_FILE ${TS_FILES}) 13 | get_filename_component(QM_FILE ${TS_FILE} NAME_WE) 14 | set(QM_FILE ${CMAKE_CURRENT_BINARY_DIR}/${QM_FILE}.qm) 15 | list(APPEND QM_FILES ${QM_FILE}) 16 | 17 | add_custom_command( 18 | OUTPUT ${QM_FILE} 19 | COMMAND ${Qt5_LRELEASE_EXECUTABLE} -compress -nounfinished -removeidentical ${TS_FILE} -qm ${QM_FILE} 20 | DEPENDS ${TS_FILE} 21 | ) 22 | 23 | get_filename_component(QM_FILE_NAME ${QM_FILE} NAME) 24 | string(APPEND QRC_CONTENTS "${QM_FILE_NAME}") 25 | endforeach() 26 | string(APPEND QRC_CONTENTS "") 27 | 28 | set(TRANSLATIONS_QRC ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc) 29 | add_custom_command( 30 | OUTPUT ${TRANSLATIONS_QRC} 31 | COMMAND echo ${QRC_CONTENTS} > ${TRANSLATIONS_QRC} 32 | VERBATIM 33 | ) 34 | set_source_files_properties(${TRANSLATIONS_QRC} PROPERTIES SKIP_AUTORCC ON) 35 | 36 | set(TRANSLATIONS_CPP ${CMAKE_CURRENT_BINARY_DIR}/qrc_translations.cpp) 37 | add_custom_command( 38 | OUTPUT ${TRANSLATIONS_CPP} 39 | COMMAND ${Qt5Core_RCC_EXECUTABLE} 40 | ARGS --name translations --output ${TRANSLATIONS_CPP} ${TRANSLATIONS_QRC} 41 | MAIN_DEPENDENCY ${TRANSLATIONS_QRC} 42 | DEPENDS ${QM_FILES} 43 | VERBATIM 44 | ) 45 | set_source_files_properties(${TRANSLATIONS_CPP} PROPERTIES SKIP_AUTOMOC ON) 46 | set_source_files_properties(${TRANSLATIONS_CPP} PROPERTIES SKIP_AUTOUIC ON) 47 | 48 | add_library(translations ${TRANSLATIONS_CPP}) 49 | target_link_libraries(translations PUBLIC Qt5::Core) 50 | -------------------------------------------------------------------------------- /wizard/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | qt5_add_resources(RESOURCE_FILES *.qrc) 2 | -------------------------------------------------------------------------------- /wizard/SeedListGrid.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | import QtQuick.Dialogs 1.2 3 | import QtQuick.Layouts 1.2 4 | import QtQuick.Controls 2.0 5 | 6 | import "../js/Wizard.js" as Wizard 7 | import "../js/Utils.js" as Utils 8 | import "../components" as MoneroComponents 9 | 10 | GridLayout { 11 | id: seedGrid 12 | Layout.alignment: Qt.AlignHCenter 13 | flow: GridLayout.TopToBottom 14 | columns: wizardController.layoutScale == 1 ? 5 : wizardController.layoutScale == 2 ? 4 : wizardController.layoutScale == 3 ? 3 : 2 15 | rows: wizardController.layoutScale == 1 ? 5 :wizardController.layoutScale == 2 ? 7 : wizardController.layoutScale == 3 ? 9 : 13 16 | columnSpacing: wizardController.layoutScale == 1 ? 25 : 18 17 | rowSpacing: 0 18 | 19 | Component.onCompleted: { 20 | var seed = wizardController.walletOptionsSeed.split(" "); 21 | var component = Qt.createComponent("SeedListItem.qml"); 22 | for(var i = 0; i < seed.length; i++) { 23 | component.createObject(seedGrid, {wordNumber: i, word: seed[i]}); 24 | } 25 | } 26 | } 27 | --------------------------------------------------------------------------------