From a71bd1eb28cc7db41de684c8bec20052f5a4bbfb Mon Sep 17 00:00:00 2001 From: Chee Yee Date: Tue, 8 Oct 2024 20:50:42 -0700 Subject: [PATCH] enchancements to install from url --- data/assets/langs/Arabic.ini | 2 +- data/assets/langs/English.ini | 9 ++- data/assets/langs/Korean.ini | 76 +++++++++++++++++- data/assets/langs/Turkish.ini | 130 +++++++++++++++++++++--------- data/assets/langs/Vietnamese.ini | 133 +++++++++++++++++++++++++++++++ myrient.jpg | Bin 0 -> 169117 bytes source/actions.cpp | 76 ++++++++++++++++-- source/actions.h | 3 +- source/config.cpp | 5 +- source/config.h | 4 + source/lang.cpp | 5 +- source/lang.h | 7 +- source/main.cpp | 18 +++-- source/server/http_server.cpp | 6 ++ source/windows.cpp | 66 ++++++++++++--- 15 files changed, 467 insertions(+), 73 deletions(-) create mode 100644 data/assets/langs/Vietnamese.ini create mode 100644 myrient.jpg diff --git a/data/assets/langs/Arabic.ini b/data/assets/langs/Arabic.ini index acb66de..5f8bdad 100644 --- a/data/assets/langs/Arabic.ini +++ b/data/assets/langs/Arabic.ini @@ -113,7 +113,7 @@ STR_DOWNLOAD_INSTALL_MSG=تثبيت الحزمة عن بعد غير ممكن. ه STR_CHECKING_REMOTE_SERVER_MSG=التحقق من الخادم البعيد لتثبيت الحزمة عن بعد. STR_ENABLE_RPI=RPI STR_ENABLE_RPI_FTP_SMB_MSG=يتيح هذا الخيار تثبيت الحزمة عن بُعد عبر خادم الويب المضمن. -STR_ENABLE_RPI_WEBDAV_MSG==يتيح هذا الخيار تثبيت الحزمة عن بُعد عبر خادم الويب المضمن. +STR_ENABLE_RPI_WEBDAV_MSG=يتيح هذا الخيار تثبيت الحزمة عن بُعد عبر خادم الويب المضمن. STR_FILES=الملفات STR_EDITOR=المحرر STR_SAVE=حفظ diff --git a/data/assets/langs/English.ini b/data/assets/langs/English.ini index 0d57bed..a9e941c 100644 --- a/data/assets/langs/English.ini +++ b/data/assets/langs/English.ini @@ -112,8 +112,8 @@ STR_CANNOT_CONNECT_REMOTE_MSG=Remote HTTP Server not reachable. STR_DOWNLOAD_INSTALL_MSG=Remote Package Install not possible. Would you like to download package and install instead? STR_CHECKING_REMOTE_SERVER_MSG=Checking remote server for Remote Package Install. STR_ENABLE_RPI=RPI -STR_ENABLE_RPI_FTP_SMB_MSG=This option enables Remote Package Installation via embedded Web Server. -STR_ENABLE_RPI_WEBDAV_MSG==This option enables Remote Package Installation via embedded Web Server. +STR_ENABLE_RPI_FTP_SMB_MSG=This option enables Remote Package Installation via embedded Web Server proxy. +STR_ENABLE_RPI_WEBDAV_MSG=This option enables Remote Package Installation via embedded Web Server proxy. STR_FILES=Files STR_EDITOR=Editor STR_SAVE=Save @@ -160,4 +160,7 @@ STR_LANGUAGE=Language STR_TEMP_DIRECTORY=Temp Directory STR_REALDEBRID=Real-Debrid STR_BACKGROUND_INSTALL_INPROGRESS=Package install is running in the background. Don't close the app while install is in progress -STR_ENABLE_DISC_CACHE_MSG=Enable disk caching. Can improve package install speed in cases where connection to remote is slow +STR_ENABLE_DISC_CACHE_MSG=Enable disk caching. Can improve Remote Package Install speed in cases where connection to remote is slow, but breaks resuming of install +STR_ENABLE_ALLDEBRID_MSG=Install Via AllDebrid +STR_ENABLE_REALDEBRID_MSG=Install Via RealDebrid +STR_ENABLE_DISKCACHE_DESC=Enable Disk Cache \ No newline at end of file diff --git a/data/assets/langs/Korean.ini b/data/assets/langs/Korean.ini index 043a60c..afaa703 100644 --- a/data/assets/langs/Korean.ini +++ b/data/assets/langs/Korean.ini @@ -25,7 +25,7 @@ STR_FILE=파일 STR_TYPE=종류 STR_NAME=이름 STR_SIZE=크기 -STR_DATE=일시 +STR_DATE=날짜 STR_NEW_FOLDER=새 폴더 STR_RENAME=이름 변경 STR_DELETE=삭제 @@ -39,7 +39,7 @@ STR_OVERWRITE=덮어쓰기 STR_DONT_OVERWRITE=덮어쓰기 금지 STR_ASK_FOR_CONFIRM=수락여부를 질문 STR_DONT_ASK_CONFIRM=수락여부를 묻지 않음 -STR_ALLWAYS_USE_OPTION=두번다시 묻지 않고 항상 이 설정을 사용 +STR_ALLWAYS_USE_OPTION=두 번 다시 묻지 않고 항상 이 설정을 사용 STR_ACTIONS=실행 STR_CONFIRM=확인 STR_OVERWRITE_OPTIONS=덮어쓰기 옵션 @@ -59,3 +59,75 @@ STR_FAIL_DEL_DIR_MSG=디렉토리 삭제에 실패하였습니다. STR_DELETING=삭제 중 STR_FAIL_DEL_FILE_MSG=파일 삭제에 실패하였습니다. STR_DELETED=삭제됨 +STR_LINK=링크 +STR_SHARE=공유 +STR_FAILED=310 실패함 +STR_FAIL_CREATE_LOCAL_FILE_MSG=310 로컬에서 파일을 만들기 실패함 +STR_INSTALL=설치 +STR_INSTALLING=설치 중 +STR_INSTALL_SUCCESS=성공 +STR_INSTALL_FAILED=실패함 +STR_INSTALL_SKIPPED=건너뜀 +STR_CHECK_HTTP_MSG=원격 HTTP 서버에 대한 연결 확인 +STR_FAILED_HTTP_CHECK=HTTP 서버에 연결에 실패함 +STR_REMOTE_NOT_HTTP=원격이 HTTP 서버가 아님 +STR_INSTALL_FROM_DATA_MSG=패키지가 /data 또는 /mnt/usbX 폴더에 없음 +STR_ALREADY_INSTALLED_MSG=패키지가 이미 설치되었음 +STR_INSTALL_FROM_URL=URL에서 설치 +STR_CANNOT_READ_PKG_HDR_MSG=패키지 헤더 정보를 읽을 수 없음 +STR_FAVORITE_URLS=즐겨찾기 URL +STR_SLOT=슬롯 +STR_EDIT=편집 +STR_ONETIME_URL=한 번만 Url +STR_NOT_A_VALID_PACKAGE=유효하지 않은 패키지 +STR_WAIT_FOR_INSTALL_MSG=패키지 설치가 완료되기를 기다리는 중 +STR_FAIL_INSTALL_TMP_PKG_MSG=pkg 파일을 설치하지 못했습니다. tmp pkg를 수동으로 삭제하세요. +STR_AUTO_DELETE_TMP_PKG=설치 후 임시로 다운로드한 pkg 파일을 자동으로 삭제 +STR_PROTOCOL_NOT_SUPPORTED=지원되지 않는 프로토콜 +STR_COULD_NOT_RESOLVE_HOST=호스트 이름을 확인할 수 없음 +STR_EXTRACT=압축 해제 +STR_EXTRACTING=압축 해제 중 +STR_FAILED_TO_EXTRACT=압축 해제 실패함 +STR_EXTRACT_LOCATION=압축 해제 위치 +STR_COMPRESS=압축 +STR_ZIP_FILE_PATH=Zip 파일 이름 +STR_COMPRESSING=압축 중 +STR_ERROR_CREATE_ZIP=zip 파일을 만드는 동안 오류 발생 +STR_UNSUPPORTED_FILE_FORMAT=지원되지 않는 압축 파일 형식 +STR_CUT=잘라내기 +STR_COPY=복사 +STR_PASTE=붙여넣기 +STR_MOVING=이동 중 +STR_COPYING=복사 중 +STR_FAIL_MOVE_MSG=파일 이동 실패함 +STR_FAIL_COPY_MSG=파일 복사 실패함 +STR_CANT_MOVE_TO_SUBDIR_MSG=상위 디렉토리를 하위 디렉토리로 이동할 수 없음 +STR_CANT_COPY_TO_SUBDIR_MSG=상위 디렉토리를 하위 디렉토리로 복사할 수 없음 +STR_UNSUPPORTED_OPERATION_MSG=지원되지 않는 작업 +STR_HTTP_PORT=Http 포트 +STR_REINSTALL_CONFIRM_MSG=콘텐츠가 이미 설치되었습니다. 설치를 계속할까요? +STR_REMOTE_NOT_SUPPORT_MSG=보호된 서버에서는 원격 패키지 설치가 지원되지 않습니다. +STR_CANNOT_CONNECT_REMOTE_MSG=원격 HTTP 서버에 연결할 수 없습니다. +STR_DOWNLOAD_INSTALL_MSG=원격 패키지 설치가 불가능합니다. 패키지를 다운로드하여 설치할까요? +STR_CHECKING_REMOTE_SERVER_MSG=원격 패키지 설치를 위해 원격 서버를 확인하고 있습니다. +STR_FILES=파일 +STR_EDITOR=편집기 +STR_SAVE=저장 +STR_MAX_EDIT_FILE_SIZE_MSG=다음보다 큰 파일을 편집할 수 없음 +STR_DELETE_LINE=선택한 줄 삭제 +STR_INSERT_LINE=선택한 줄 아래에 삽입 +STR_MODIFIED=수정됨 +STR_FAIL_GET_TOKEN_MSG=다음에서 접속 토큰을 얻는데 실패함 +STR_GET_TOKEN_SUCCESS_MSG=로그인에 성공했습니다. 브라우저를 닫고 애플리케이션으로 돌아갈 수 있음 +STR_NEW_FILE=새 파일 +STR_SETTINGS=설정 +STR_GLOBAL=글로벌 +STR_COPY_LINE=선택한 줄 복사 +STR_PASTE_LINE=선택한 줄에 붙여넣기 +STR_SHOW_HIDDEN_FILES=숨겨진 파일 표시 +STR_SET_DEFAULT_DIRECTORY=기본 폴더 설정 +STR_SET_DEFAULT_DIRECTORY_MSG=기본 디렉터리로 설정됨 +STR_NFS_EXP_PATH_MISSING_MSG=URL에 NFS 내보내기 경로 없음 +STR_FAIL_INIT_NFS_CONTEXT=NFS 컨텍스트를 초기화 실패함 +STR_FAIL_MOUNT_NFS_MSG=NFS 공유를 마운트 실패함 +STR_VIEW_IMAGE=이미지 보기 diff --git a/data/assets/langs/Turkish.ini b/data/assets/langs/Turkish.ini index 2812832..3eaca30 100644 --- a/data/assets/langs/Turkish.ini +++ b/data/assets/langs/Turkish.ini @@ -1,75 +1,133 @@ STR_CONNECTION_SETTINGS=Bağlantı Ayarları STR_SITE=Site STR_LOCAL=Yerel -STR_REMOTE=Uzaktan +STR_REMOTE=Uzak STR_MESSAGES=Mesajlar STR_UPDATE_SOFTWARE=Yazılımı Güncelle STR_CONNECT=Bağlan -STR_DISCONNECT=Bağlantıyı kes -STR_SEARCH=Ara +STR_DISCONNECT=Bağlantıyı Kes +STR_SEARCH=Arama STR_REFRESH=Yenile STR_SERVER=Sunucu STR_USERNAME=Kullanıcı Adı -STR_PASSWORD=Şifre +STR_PASSWORD=Parola STR_PORT=Port -STR_PASV=Pasv +STR_PASV=Pasif STR_DIRECTORY=Dizin STR_FILTER=Filtre STR_YES=Evet STR_NO=Hayır STR_CANCEL=İptal -STR_CONTINUE=Devam +STR_CONTINUE=Devam Et STR_CLOSE=Kapat STR_FOLDER=Klasör STR_FILE=Dosya -STR_TYPE=Tip +STR_TYPE=Tür STR_NAME=Ad STR_SIZE=Boyut STR_DATE=Tarih STR_NEW_FOLDER=Yeni Klasör STR_RENAME=Yeniden Adlandır STR_DELETE=Sil -STR_UPLOAD=Karşıya Yükle +STR_UPLOAD=Yükle STR_DOWNLOAD=İndir -STR_SELECT_ALL=Tümünü Seç -STR_CLEAR_ALL=Tümünü Temizle -STR_UPLOADING=Karşıya Yükleniyor +STR_SELECT_ALL=Hepsini Seç +STR_CLEAR_ALL=Hepsini Temizle +STR_UPLOADING=Yükleniyor STR_DOWNLOADING=İndiriliyor -STR_OVERWRITE=Üzerine yaz -STR_DONT_OVERWRITE=Üzerine yazma -STR_ASK_FOR_CONFIRM=Onaylamak için sor -STR_DONT_ASK_CONFIRM=Onaylamak için sorma -STR_ALLWAYS_USE_OPTION=Daima bu seçeneği kullan ve bir daha sorma -STR_ACTIONS=Eylemler +STR_OVERWRITE=Üzerine Yaz +STR_DONT_OVERWRITE=Üzerine Yazma +STR_ASK_FOR_CONFIRM=Onay İste +STR_DONT_ASK_CONFIRM=Onay İsteme +STR_ALLWAYS_USE_OPTION=Bu seçeneği her zaman kullan ve bir daha sorma +STR_ACTIONS=İşlemler STR_CONFIRM=Onayla -STR_OVERWRITE_OPTIONS=Ayarların üzerine yaz +STR_OVERWRITE_OPTIONS=Üzerine Yazma Seçenekleri STR_PROPERTIES=Özellikler -STR_PROGRESS=Durum +STR_PROGRESS=İlerleme STR_UPDATES=Güncellemeler STR_DEL_CONFIRM_MSG=Bu dosya(ları)/klasör(leri) silmek istediğinizden emin misiniz? -STR_CANCEL_ACTION_MSG=İptal ediliyor. Son işlemin tamamlanması bekleniyor -STR_FAIL_UPLOAD_MSG=Dosya karşıya yükleme başarısız -STR_FAIL_DOWNLOAD_MSG=Dosya indirme başarısız -STR_FAIL_READ_LOCAL_DIR_MSG=Dizindeki içerikler okunamadı ya da öyle bir klasör yok -STR_CONNECTION_CLOSE_ERR_MSG=426 Bağlantı kesildi. -STR_REMOTE_TERM_CONN_MSG=426 Uzaktan Sunucu bağlantıyı kesti. -STR_FAIL_LOGIN_MSG=300 Giriş başarısız. Lütfen kullanıcı adınızı ve şifrenizi kontrol edin. +STR_CANCEL_ACTION_MSG=İptal ediliyor. Son eylemin tamamlanması bekleniyor +STR_FAIL_UPLOAD_MSG=Dosya yüklenemedi +STR_FAIL_DOWNLOAD_MSG=Dosya indirilemedi +STR_FAIL_READ_LOCAL_DIR_MSG=Yerel dizinin içeriği okunamadı veya klasör mevcut değil. +STR_CONNECTION_CLOSE_ERR_MSG=426 Bağlantı kapatıldı. +STR_REMOTE_TERM_CONN_MSG=426 Uzak Sunucu bağlantıyı sonlandırdı. +STR_FAIL_LOGIN_MSG=300 Giriş Başarısız. Lütfen kullanıcı adınızı veya şifrenizi kontrol edin. STR_FAIL_TIMEOUT_MSG=426 Başarısız. Bağlantı zaman aşımına uğradı. -STR_FAIL_DEL_DIR_MSG=Dizin silme başarısız +STR_FAIL_DEL_DIR_MSG=Dizin silinemedi STR_DELETING=Siliniyor -STR_FAIL_DEL_FILE_MSG=Dosya silme başarısız +STR_FAIL_DEL_FILE_MSG=Dosya silinemedi STR_DELETED=Silindi -STR_LINK=Link +STR_LINK=Bağlantı STR_SHARE=Paylaş STR_FAILED=310 Başarısız -STR_FAIL_CREATE_LOCAL_FILE_MSG=310 Yerelde dosya oluşturulumu başarısız -STR_INSTALL=Yükle -STR_INSTALLING=Yükleniyor +STR_FAIL_CREATE_LOCAL_FILE_MSG=310 Yerelde dosya oluşturulamadı +STR_INSTALL=Kur +STR_INSTALLING=Kuruluyor STR_INSTALL_SUCCESS=Başarılı STR_INSTALL_FAILED=Başarısız STR_INSTALL_SKIPPED=Atlandı -STR_CHECK_HTTP_MSG=Uzaktan HTTP Sunucusu bağlantısı kontrol ediliyor -STR_FAILED_HTTP_CHECK=HTTP Sunucusuna bağlantı başarısız -STR_REMOTE_NOT_HTTP=Uzaktaki HTTP Sunucusu değil -STR_INSTALL_FROM_DATA_MSG=Paket /data ya da /mnt/usbX dizininde değil +STR_CHECK_HTTP_MSG=Uzak HTTP Sunucusuna bağlantı kontrol ediliyor +STR_FAILED_HTTP_CHECK=HTTP Sunucusuna bağlanılamadı +STR_REMOTE_NOT_HTTP=Uzak bir HTTP Sunucusu değil +STR_INSTALL_FROM_DATA_MSG=Paket /data veya /mnt/usbX klasöründe değil STR_ALREADY_INSTALLED_MSG=Paket zaten kurulu +STR_INSTALL_FROM_URL=URL'den Kur +STR_CANNOT_READ_PKG_HDR_MSG=Paket başlık bilgisi okunamadı +STR_FAVORITE_URLS=Favori URL'ler +STR_SLOT=Yuva +STR_EDIT=Düzenle +STR_ONETIME_URL=Tek Seferlik URL +STR_NOT_A_VALID_PACKAGE=Geçerli bir Paket değil +STR_WAIT_FOR_INSTALL_MSG=Paketin kurulmasının tamamlanması bekleniyor +STR_FAIL_INSTALL_TMP_PKG_MSG=Geçici paketin kurulumu başarısız. Lütfen geçici paketi manuel olarak silin +STR_AUTO_DELETE_TMP_PKG=Kurulumdan sonra geçici indirilen paketi otomatik olarak sil +STR_PROTOCOL_NOT_SUPPORTED=Protokol desteklenmiyor +STR_COULD_NOT_RESOLVE_HOST=Ana bilgisayar adı çözülemedi +STR_EXTRACT=Çıkart +STR_EXTRACTING=Çıkartılıyor +STR_FAILED_TO_EXTRACT=Çıkartma başarısız oldu +STR_EXTRACT_LOCATION=Çıkartılacak Konum +STR_COMPRESS=Sıkıştır +STR_ZIP_FILE_PATH=Zip Dosya Adı +STR_COMPRESSING=Sıkıştırılıyor +STR_ERROR_CREATE_ZIP=Zip oluşturulurken hata oluştu +STR_UNSUPPORTED_FILE_FORMAT=Desteklenmeyen sıkıştırılmış dosya formatı +STR_CUT=Kes +STR_COPY=Kopyala +STR_PASTE=Yapıştır +STR_MOVING=Taşınıyor +STR_COPYING=Kopyalanıyor +STR_FAIL_MOVE_MSG=Dosya taşınamadı +STR_FAIL_COPY_MSG=Dosya kopyalanamadı +STR_CANT_MOVE_TO_SUBDIR_MSG=Ana dizin alt dizinine taşınamaz +STR_CANT_COPY_TO_SUBDIR_MSG=Ana dizin alt dizinine kopyalanamaz +STR_UNSUPPORTED_OPERATION_MSG=Desteklenmeyen işlem +STR_HTTP_PORT=Http Portu +STR_REINSTALL_CONFIRM_MSG=İçerik zaten kurulu. Kuruluma devam etmek istiyor musunuz? +STR_REMOTE_NOT_SUPPORT_MSG=Korunan sunucular için uzak paket kurulumu desteklenmiyor. +STR_CANNOT_CONNECT_REMOTE_MSG=Uzak HTTP Sunucusuna bağlanılamıyor. +STR_DOWNLOAD_INSTALL_MSG=Uzak Paket Kurulumu mümkün değil. Paketi indirip kurmak ister misiniz? +STR_CHECKING_REMOTE_SERVER_MSG=Uzak Paket Kurulumu için uzak sunucu kontrol ediliyor. +STR_FILES=Dosyalar +STR_EDITOR=Düzenleyici +STR_SAVE=Kaydet +STR_MAX_EDIT_FILE_SIZE_MSG=Boyutu şu büyüklükten büyük dosyalar düzenlenemez +STR_DELETE_LINE=Seçili Satırı Sil +STR_INSERT_LINE=Seçili Satırın Altına Ekle +STR_MODIFIED=Değiştirildi +STR_FAIL_GET_TOKEN_MSG=Erişim token'ı alınamadı +STR_GET_TOKEN_SUCCESS_MSG=Giriş Başarılı. Tarayıcıyı kapatıp uygulamaya dönebilirsiniz +STR_NEW_FILE=Yeni Dosya +STR_SETTINGS=Ayarlar +STR_GLOBAL=Genel +STR_COPY_LINE=Seçili satırı kopyala +STR_PASTE_LINE=Seçili satıra yapıştır +STR_SHOW_HIDDEN_FILES=Gizli dosyaları göster +STR_SET_DEFAULT_DIRECTORY=Varsayılan Klasörü Ayarla +STR_SET_DEFAULT_DIRECTORY_MSG=varsayılan dizin olarak ayarlandı +STR_NFS_EXP_PATH_MISSING_MSG=URL'de NFS dışa aktarma yolu eksik +STR_FAIL_INIT_NFS_CONTEXT=NFS bağlamı başlatılamadı +STR_FAIL_MOUNT_NFS_MSG=NFS paylaşımı bağlanamadı +STR_VIEW_IMAGE=Görüntüyü Görüntüle diff --git a/data/assets/langs/Vietnamese.ini b/data/assets/langs/Vietnamese.ini new file mode 100644 index 0000000..15aadd9 --- /dev/null +++ b/data/assets/langs/Vietnamese.ini @@ -0,0 +1,133 @@ +STR_CONNECTION_SETTINGS=Cài đặt kết nối +STR_SITE=Vị trí +STR_LOCAL=Thiết bị +STR_REMOTE=Máy đích +STR_MESSAGES=Tin nhắn +STR_UPDATE_SOFTWARE=Cập nhật phần mềm +STR_CONNECT=Kết nối +STR_DISCONNECT=Ngắt kết nối +STR_SEARCH=Tìm kiếm +STR_REFRESH=Làm mới +STR_SERVER=Máy chủ +STR_USERNAME=Tên đăng nhập +STR_PASSWORD=Mật khẩu +STR_PORT=Cổng +STR_PASV=Pasv +STR_DIRECTORY=Thư mục +STR_FILTER=Bộ lọc +STR_YES=Đồng ý +STR_NO=Không +STR_CANCEL=Hủy bỏ +STR_CONTINUE=Tiếp tục +STR_CLOSE=Đóng +STR_FOLDER=Thư mục +STR_FILE=Tập tin +STR_TYPE=Loại +STR_NAME=Tên +STR_SIZE=Kích thước +STR_DATE=Ngày tháng +STR_NEW_FOLDER=Thư mục mới +STR_RENAME=Đổi tên +STR_DELETE=Xóa +STR_UPLOAD=Tải lên +STR_DOWNLOAD=Tải xuống +STR_SELECT_ALL=Chọn tất cả +STR_CLEAR_ALL=Bỏ chọn tất cả +STR_UPLOADING=Đang tải lên +STR_DOWNLOADING=Đang tải xuống +STR_OVERWRITE=Ghi đè +STR_DONT_OVERWRITE=Không ghi đè +STR_ASK_FOR_CONFIRM=Hỏi xác nhận +STR_DONT_ASK_CONFIRM=Không hỏi xác nhận +STR_ALLWAYS_USE_OPTION=Luôn dùng tùy chọn này và không hỏi lại +STR_ACTIONS=Hành động +STR_CONFIRM=Xác nhận +STR_OVERWRITE_OPTIONS=Tùy chọn ghi đè +STR_PROPERTIES=Thuộc tính +STR_PROGRESS=Tiến trình +STR_UPDATES=Cập nhật +STR_DEL_CONFIRM_MSG=Bạn có chắc chắn muốn xóa (những) tập tin / thư mục này không? +STR_CANCEL_ACTION_MSG=Hủy bỏ. Chờ hành động cuối cùng hoàn tất.Canceling. +STR_FAIL_UPLOAD_MSG=Không thể tải file lên +STR_FAIL_DOWNLOAD_MSG=Không thể tải file +STR_FAIL_READ_LOCAL_DIR_MSG=Không đọc được nội dung của thư mục hoặc thư mục không tồn tại. +STR_CONNECTION_CLOSE_ERR_MSG=426 Kết nối đã đóng. +STR_REMOTE_TERM_CONN_MSG=426 Máy chủ đã ngắt kết nối. +STR_FAIL_LOGIN_MSG=300 Đăng nhập thất bại. Vui lòng kiểm tra lại tên đăng nhập hoặc mật khẩu. +STR_FAIL_TIMEOUT_MSG=426 Thất bại. Quá thời gian kết nối. +STR_FAIL_DEL_DIR_MSG=Không thể xóa thư mục +STR_DELETING=Đang xóa +STR_FAIL_DEL_FILE_MSG=Không thể xóa tập tin +STR_DELETED=Đã xóa +STR_LINK=Liên kết +STR_SHARE=Chia sẻ +STR_FAILED=310 Lỗi +STR_FAIL_CREATE_LOCAL_FILE_MSG=310 Không thể tạo file trên máy này +STR_INSTALL=Cài đặt +STR_INSTALLING=Đang cài đặt +STR_INSTALL_SUCCESS=Thành công +STR_INSTALL_FAILED=Thất bại +STR_INSTALL_SKIPPED=Bỏ qua +STR_CHECK_HTTP_MSG=Đang kiểm tra kết nối tới máy chủ HTTP +STR_FAILED_HTTP_CHECK=Không thể kết nối tới máy chủ HTTP +STR_REMOTE_NOT_HTTP=Máy đích không phải máy chủ HTTP +STR_INSTALL_FROM_DATA_MSG=Package không có trong thư mục /data hoặc /mnt/usbX +STR_ALREADY_INSTALLED_MSG=Package đã được cài đặt +STR_INSTALL_FROM_URL=Cài từ địa chỉ URL +STR_CANNOT_READ_PKG_HDR_MSG=Không thể đọc được thông tin header của package +STR_FAVORITE_URLS=URLs yêu thích +STR_SLOT=Vị trí +STR_EDIT=Sửa +STR_ONETIME_URL=Url một lần +STR_NOT_A_VALID_PACKAGE=Package không đúng +STR_WAIT_FOR_INSTALL_MSG=Đợi Package kết thúc cài đặt +STR_FAIL_INSTALL_TMP_PKG_MSG=Không thể cài file pkg. Vui lòng xóa tmp pkg thủ công +STR_AUTO_DELETE_TMP_PKG=Tự động xóa file pkg được tải về tạm thời sau khi cài xong +STR_PROTOCOL_NOT_SUPPORTED=Protocol không được hỗ trợ +STR_COULD_NOT_RESOLVE_HOST=Không thể phân giải tên máy chủ +STR_EXTRACT=Giải nén +STR_EXTRACTING=Đang giải nén +STR_FAILED_TO_EXTRACT=Giải nén thất bại +STR_EXTRACT_LOCATION=Vị trí giải nén +STR_COMPRESS=Nén +STR_ZIP_FILE_PATH=Tên file Zip +STR_COMPRESSING=Đang nén +STR_ERROR_CREATE_ZIP=Lỗi khi tạo file zip +STR_UNSUPPORTED_FILE_FORMAT=Phần mở rộng file không được hỗ trợ +STR_CUT=Cắt +STR_COPY=Sao chép +STR_PASTE=Dán +STR_MOVING=Đang di chuyển +STR_COPYING=Đang copy +STR_FAIL_MOVE_MSG=Không thể di chuyển file +STR_FAIL_COPY_MSG=Không thể sao chép file +STR_CANT_MOVE_TO_SUBDIR_MSG=Không thể di chuyển thư mục cha vào bên trong thư mục con +STR_CANT_COPY_TO_SUBDIR_MSG=Không thể sao chép thư mục cha vào bên trong thư mục con +STR_UNSUPPORTED_OPERATION_MSG=Hành động không được hỗ trợ +STR_HTTP_PORT=Cổng Http +STR_REINSTALL_CONFIRM_MSG=Nội dung đã được cài đặt. Bạn có muốn tiếp tục cài đặt không? +STR_REMOTE_NOT_SUPPORT_MSG=Cài đặt gói từ xa không được hỗ trợ cho các máy chủ được bảo vệ. +STR_CANNOT_CONNECT_REMOTE_MSG=Máy chủ HTTP đích không thể truy cập được. +STR_DOWNLOAD_INSTALL_MSG=Không thể cài đặt package từ xa. Bạn có muốn tải package xuống và cài đặt không? +STR_CHECKING_REMOTE_SERVER_MSG=Đang kiểm tra máy chủ đích để cài đặt package từ xa. +STR_FILES=Tập tin +STR_EDITOR=Trình soạn thảo +STR_SAVE=Lưu +STR_MAX_EDIT_FILE_SIZE_MSG=Không thể chỉnh sửa các tập tin lớn hơn +STR_DELETE_LINE=Xóa dòng đã chọn +STR_INSERT_LINE=Chèn bên dưới dòng đã chọn +STR_MODIFIED=Đã sửa đổi +STR_FAIL_GET_TOKEN_MSG=Không thể lấy được access token từ +STR_GET_TOKEN_SUCCESS_MSG=Đăng nhập thành công. Bạn có thể đóng trình duyệt và quay lại ứng dụng +STR_NEW_FILE=Tập tin mới +STR_SETTINGS=Cài đặt +STR_GLOBAL=Toàn cục +STR_COPY_LINE=Sao chép dòng đã chọn +STR_PASTE_LINE=Dán vào dòng đã chọn +STR_SHOW_HIDDEN_FILES=Hiển thị các tập tin ẩn +STR_SET_DEFAULT_DIRECTORY=Đặt thư mục mặc định +STR_SET_DEFAULT_DIRECTORY_MSG=đã được thiết lập làm thư mục mặc định +STR_NFS_EXP_PATH_MISSING_MSG=Đường dẫn NFS bị thiếu trong URL +STR_FAIL_INIT_NFS_CONTEXT=Không khởi tạo được ngữ cảnh NFS +STR_FAIL_MOUNT_NFS_MSG=Không thể mount NFS share +STR_PROMOTING=Promoting diff --git a/myrient.jpg b/myrient.jpg new file mode 100644 index 0000000000000000000000000000000000000000..609404ee11f212f21dc3a45647b3cdfb8702d335 GIT binary patch literal 169117 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 #include #include +#include #include #include #include @@ -19,6 +20,7 @@ #include "clients/rclone.h" #include "clients/sftpclient.h" #include "filehost/filehost.h" +#include "server/http_server.h" #include "common.h" #include "fs.h" #include "config.h" @@ -1108,7 +1110,7 @@ namespace Actions } } - void *InstallUrlPkgThread(void *argp) + void *InstallLocalUrlPkgThread(void *argp) { bytes_transfered = 0; sceRtcGetCurrentTick(&prev_tick); @@ -1119,10 +1121,10 @@ namespace Actions OrbisTick tick; sceRtcGetCurrentClockLocalTime(&now); sceRtcGetTick(&now, &tick); - sprintf(filename, "%s/%lu.pkg", DATA_PATH, tick.mytick); + sprintf(filename, "%s/%lu.pkg", TMP_FOLDER_PATH, tick.mytick); std::string full_url = std::string(install_pkg_url.url); - FileHost *filehost = FileHost::getFileHost(full_url); + FileHost *filehost = FileHost::getFileHost(full_url, install_pkg_url.enable_alldebrid, install_pkg_url.enable_realdebrid); if (!filehost->IsValidUrl()) { sprintf(status_message, "%s", lang_strings[STR_FAIL_TO_OBTAIN_GG_DL_MSG]); @@ -1145,7 +1147,7 @@ namespace Actions std::string host = full_url.substr(0, path_pos); std::string path = full_url.substr(path_pos); - WebDAVClient tmp_client; + BaseClient tmp_client; tmp_client.Connect(host.c_str(), install_pkg_url.username, install_pkg_url.password); sprintf(activity_message, "%s URL to %s", lang_strings[STR_DOWNLOADING], filename); @@ -1153,7 +1155,7 @@ namespace Actions memset(&header, 0, s); int ret = tmp_client.Size(path, &bytes_to_download); - if (!ret) + if (ret == 0) { sprintf(status_message, "%s - %s", lang_strings[STR_FAILED], lang_strings[STR_CANNOT_READ_PKG_HDR_MSG]); tmp_client.Quit(); @@ -1163,7 +1165,7 @@ namespace Actions } file_transfering = 1; - int is_performed = tmp_client.Get(path, filename); + int is_performed = tmp_client.Get(filename, path); if (is_performed == 0) { @@ -1216,10 +1218,70 @@ namespace Actions return NULL; } + void *InstallRpiUrlPkgThread(void *argp) + { + json_object *params = json_object_new_object(); + json_object_object_add(params, "url", json_object_new_string(install_pkg_url.url)); + json_object_object_add(params, "use_alldebrid", json_object_new_boolean(install_pkg_url.enable_alldebrid)); + json_object_object_add(params, "use_realdebrid", json_object_new_boolean(install_pkg_url.enable_realdebrid)); + json_object_object_add(params, "use_disk_cache", json_object_new_boolean(install_pkg_url.enable_disk_cache)); + + const char *params_str = json_object_to_json_string(params); + + char host[128]; + sprintf(host, "http://127.0.0.1:%d", http_server_port); + + httplib::Client tmp_client(host); + tmp_client.set_keep_alive(true); + tmp_client.set_follow_location(true); + tmp_client.set_connection_timeout(30); + tmp_client.set_read_timeout(30); + tmp_client.enable_server_certificate_verification(false); + + auto res = tmp_client.Post("/__local__/install_url", params_str, strlen(params_str), "application/json"); + if (res != nullptr && HTTP_SUCCESS(res->status)) + { + json_object *jobj = json_tokener_parse(res->body.c_str()); + if (jobj != nullptr) + { + json_object *result = json_object_object_get(jobj, "result"); + if (result != nullptr) + { + bool success = json_object_get_boolean(json_object_object_get(result, "success")); + if (!success) + { + const char* error_message = json_object_get_string(json_object_object_get(result, "error")); + sprintf(status_message, "%s", error_message); + activity_inprogess = false; + Windows::SetModalMode(false); + } + } + } + else + { + activity_inprogess = false; + Windows::SetModalMode(false); + } + } + else + { + activity_inprogess = false; + Windows::SetModalMode(false); + } + + return NULL; + } + void InstallUrlPkg() { + int res; sprintf(status_message, "%s", ""); - int res = pthread_create(&bk_activity_thid, NULL, InstallUrlPkgThread, NULL); + + if (!install_pkg_url.enable_rpi) + res = pthread_create(&bk_activity_thid, NULL, InstallLocalUrlPkgThread, NULL); + else + res = pthread_create(&bk_activity_thid, NULL, InstallRpiUrlPkgThread, NULL); + if (res != 0) { activity_inprogess = false; diff --git a/source/actions.h b/source/actions.h index 14982aa..6c111c0 100644 --- a/source/actions.h +++ b/source/actions.h @@ -99,7 +99,8 @@ namespace Actions void InstallRemotePkgs(); void *InstallLocalPkgsThread(void *argp); void InstallLocalPkgs(); - void *InstallUrlPkgThread(void *argp); + void *InstallLocalUrlPkgThread(void *argp); + void *InstallRpiUrlPkgThread(void *argp); void InstallUrlPkg(); void *KeepAliveThread(void *argp); void *ExtractZipThread(void *argp); diff --git a/source/config.cpp b/source/config.cpp index 9efc6fa..28457fd 100644 --- a/source/config.cpp +++ b/source/config.cpp @@ -152,12 +152,15 @@ namespace CONFIG FS::MkDirs(DATA_PATH); } + memset(&install_pkg_url, 0, sizeof(install_pkg_url)); + install_pkg_url.enable_rpi = true; + sites = {"Site 1", "Site 2", "Site 3", "Site 4", "Site 5", "Site 6", "Site 7", "Site 8", "Site 9", "Site 10", "Site 11", "Site 12", "Site 13", "Site 14", "Site 15", "Site 16", "Site 17", "Site 18", "Site 19", "Site 20"}; langs = { "Default", "Arabic", "Catalan", "Croatian", "Dutch", "English", "Euskera", "French", "Galego", "German", "Greek", "Hungarian", "Indonesian", "Italiano", "Japanese", "Korean", "Polish", "Portuguese_BR", "Russian", "Romanian", "Ryukyuan", "Spanish", "Turkish", - "Simplified Chinese", "Traditional Chinese", "Thai", "Ukrainian"}; + "Simplified Chinese", "Traditional Chinese", "Thai", "Ukrainian", "Vietnamese"}; http_servers = {HTTP_SERVER_APACHE, HTTP_SERVER_MS_IIS, HTTP_SERVER_NGINX, HTTP_SERVER_NPX_SERVE, HTTP_SERVER_RCLONE, HTTP_SERVER_ARCHIVEORG, HTTP_SERVER_MYRIENT}; text_file_extensions = { ".txt", ".ini", ".log", ".json", ".xml", ".html", ".xhtml", ".conf", ".config" }; diff --git a/source/config.h b/source/config.h index 60bfae5..271886c 100644 --- a/source/config.h +++ b/source/config.h @@ -121,6 +121,10 @@ struct PackageUrlInfo char url[512]; char username[33]; char password[25]; + bool enable_alldebrid; + bool enable_realdebrid; + bool enable_disk_cache; + bool enable_rpi; }; extern std::vector sites; diff --git a/source/lang.cpp b/source/lang.cpp index face292..4a48d9d 100644 --- a/source/lang.cpp +++ b/source/lang.cpp @@ -172,8 +172,11 @@ char lang_strings[LANG_STRINGS_NUM][LANG_STR_SIZE] = { "Temp Directory", // STR_TEMP_DIRECTORY "Real-Debrid", // STR_REALDEBRID "Package install is running in the background. Don't close the app while install is in progress", // STR_BACKGROUND_INSTALL_INPROGRESS - "Enable disk caching. Can improve package install speed in cases where connection to remote is slow", // STR_ENABLE_DISC_CACHE_MSG + "Enable disk caching. Can improve package install speed in cases where connection to remote is slow, but breaks resuming of install", // STR_ENABLE_DISC_CACHE_MSG "DC", // STR_ENABLE_DISK_CACHE + "Install Via AllDebrid", // STR_ENABLE_ALLDEBRID_MSG + "Install Via RealDebrid", // STR_ENABLE_REALDEBRID_MSG + "Enable Disk Cache", // STR_ENABLE_DISKCACHE_DESC }; bool needs_extended_font = false; diff --git a/source/lang.h b/source/lang.h index 1216aba..2408b7c 100644 --- a/source/lang.h +++ b/source/lang.h @@ -167,7 +167,10 @@ FUNC(STR_REALDEBRID) \ FUNC(STR_BACKGROUND_INSTALL_INPROGRESS) \ FUNC(STR_ENABLE_DISC_CACHE_MSG) \ - FUNC(STR_ENABLE_DISK_CACHE) + FUNC(STR_ENABLE_DISK_CACHE) \ + FUNC(STR_ENABLE_ALLDEBRID_MSG) \ + FUNC(STR_ENABLE_REALDEBRID_MSG) \ + FUNC(STR_ENABLE_DISKCACHE_DESC) #define GET_VALUE(x) x, #define GET_STRING(x) #x, @@ -177,7 +180,7 @@ enum FOREACH_STR(GET_VALUE) }; -#define LANG_STRINGS_NUM 164 +#define LANG_STRINGS_NUM 167 #define LANG_ID_SIZE 64 #define LANG_STR_SIZE 384 extern char lang_identifiers[LANG_STRINGS_NUM][LANG_ID_SIZE]; diff --git a/source/main.cpp b/source/main.cpp index de60173..7e209b9 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -139,41 +139,43 @@ void InitImgui() sceSystemServiceParamGetInt( ORBIS_SYSTEM_SERVICE_PARAM_ID_LANG, &lang_idx ); lang = Util::Trim(lang, " "); - if (lang.compare("Korean") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_KOREAN)) + bool use_system_lang = lang.empty() || lang.compare("Default") == 0; + + if (lang.compare("Korean") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_KOREAN)) { io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, NULL, io.Fonts->GetGlyphRangesKorean()); } - else if (lang.compare("Simplified Chinese") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_CHINESE_S)) + else if (lang.compare("Simplified Chinese") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_CHINESE_S)) { ImFontConfig config; config.OversampleH = 1; config.OversampleV = 1; io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, &config, io.Fonts->GetGlyphRangesChineseFull()); } - else if (lang.compare("Traditional Chinese") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_CHINESE_T)) + else if (lang.compare("Traditional Chinese") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_CHINESE_T)) { ImFontConfig config; config.OversampleH = 1; config.OversampleV = 1; io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, &config, io.Fonts->GetGlyphRangesChineseFull()); } - else if (lang.compare("Japanese") == 0 || lang.compare("Ryukyuan") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_JAPANESE)) + else if (lang.compare("Japanese") == 0 || lang.compare("Ryukyuan") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_JAPANESE)) { io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); } - else if (lang.compare("Thai") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_THAI)) + else if (lang.compare("Thai") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_THAI)) { io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, NULL, io.Fonts->GetGlyphRangesThai()); } - else if (lang.compare("Vietnamese") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_VIETNAMESE)) + else if (lang.compare("Vietnamese") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_VIETNAMESE)) { io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, NULL, io.Fonts->GetGlyphRangesVietnamese()); } - else if (lang.compare("Greek") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_GREEK)) + else if (lang.compare("Greek") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_GREEK)) { io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, NULL, io.Fonts->GetGlyphRangesGreek()); } - else if (lang.compare("Arabic") == 0 || (lang.empty() && lang_idx == ORBIS_SYSTEM_PARAM_LANG_ARABIC)) + else if (lang.compare("Arabic") == 0 || (use_system_lang && lang_idx == ORBIS_SYSTEM_PARAM_LANG_ARABIC)) { io.Fonts->AddFontFromFileTTF("/app0/assets/fonts/Roboto_ext.ttf", 26.0f, NULL, arabic); } diff --git a/source/server/http_server.cpp b/source/server/http_server.cpp index b2ac4a0..e3a25ae 100644 --- a/source/server/http_server.cpp +++ b/source/server/http_server.cpp @@ -1177,6 +1177,12 @@ namespace HttpServer SplitPkgInstallData *pkg_data = INSTALLER::GetSplitPkgInstallData(hash); + if (pkg_data == nullptr) + { + failed(res, 500, "Cannot resume split_inst"); + return; + } + if (req.method == "HEAD") { res.status = 204; diff --git a/source/windows.cpp b/source/windows.cpp index b47483c..14e5327 100644 --- a/source/windows.cpp +++ b/source/windows.cpp @@ -450,7 +450,7 @@ namespace Windows } if (ImGui::IsItemHovered()) { - ImGui::SetNextWindowSize(ImVec2(450, 70)); + ImGui::SetNextWindowSize(ImVec2(450, 110)); ImGui::BeginTooltip(); ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + 440); ImGui::Text("%s", lang_strings[STR_ENABLE_RPI_FTP_SMB_MSG]); @@ -469,7 +469,7 @@ namespace Windows } if (ImGui::IsItemHovered()) { - ImGui::SetNextWindowSize(ImVec2(550, 85)); + ImGui::SetNextWindowSize(ImVec2(550, 110)); ImGui::BeginTooltip(); ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + 540); ImGui::Text("%s", lang_strings[STR_ENABLE_DISC_CACHE_MSG]); @@ -1498,7 +1498,52 @@ namespace Windows { ImVec2 cur_pos = ImGui::GetCursorPos(); char id[128]; - if (ImGui::Button(lang_strings[STR_ONETIME_URL], ImVec2(535, 0))) + + ImGui::Checkbox("##enable_alldebrid_install_uril", &install_pkg_url.enable_alldebrid); + ImGui::SameLine(); + ImGui::Text("%s", lang_strings[STR_ENABLE_ALLDEBRID_MSG]); + + ImGui::SameLine(); + ImGui::SetCursorPosX(ImGui::GetCursorPosX()+40); + ImGui::Checkbox("##enable_realdebrid_install_uril", &install_pkg_url.enable_realdebrid); + ImGui::SameLine(); + ImGui::Text("%s", lang_strings[STR_ENABLE_REALDEBRID_MSG]); + + ImGui::SameLine(); + ImGui::SetCursorPosX(ImGui::GetCursorPosX()+40); + ImGui::Checkbox("##enable_rpi_install_url", &install_pkg_url.enable_rpi); + if (ImGui::IsItemHovered()) + { + ImGui::SetNextWindowSize(ImVec2(550, 110)); + ImGui::BeginTooltip(); + ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + 540); + ImGui::Text("%s", lang_strings[STR_ENABLE_RPI_WEBDAV_MSG]); + ImGui::PopTextWrapPos(); + ImGui::EndTooltip(); + } + ImGui::SameLine(); + ImGui::Text("%s", lang_strings[STR_ENABLE_RPI]); + + if (install_pkg_url.enable_rpi) + { + ImGui::SameLine(); + ImGui::SetCursorPosX(ImGui::GetCursorPosX()+40); + ImGui::Checkbox("##enable_diskcache_install_uril", &install_pkg_url.enable_disk_cache); + if (ImGui::IsItemHovered()) + { + ImGui::SetNextWindowSize(ImVec2(550, 110)); + ImGui::BeginTooltip(); + ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + 540); + ImGui::Text("%s", lang_strings[STR_ENABLE_DISC_CACHE_MSG]); + ImGui::PopTextWrapPos(); + ImGui::EndTooltip(); + } + ImGui::SameLine(); + ImGui::Text("%s", lang_strings[STR_ENABLE_DISKCACHE_DESC]); + } + + ImGui::Separator(); + if (ImGui::Button(lang_strings[STR_ONETIME_URL], ImVec2(1070, 0))) { ResetImeCallbacks(); sprintf(install_pkg_url.url, "%s", ""); @@ -1512,14 +1557,6 @@ namespace Windows SetModalMode(false); ImGui::CloseCurrentPopup(); } - ImGui::SameLine(); - sprintf(id, "%s##favoriteurl", lang_strings[STR_CANCEL]); - if (ImGui::Button(id, ImVec2(535, 0))) - { - select_url_inprogress = false; - SetModalMode(false); - ImGui::CloseCurrentPopup(); - } ImGui::Separator(); for (int j = 0; j < MAX_FAVORITE_URLS; j++) @@ -1567,6 +1604,13 @@ namespace Windows } } + if (ImGui::IsKeyPressed(ImGuiKey_GamepadFaceRight, false)) + { + select_url_inprogress = false; + SetModalMode(false); + ImGui::CloseCurrentPopup(); + } + ImGui::EndPopup(); } }