├── .cirrus.yml ├── .gitignore ├── LICENSE ├── LICENSE_UNRAR ├── README.md ├── app ├── .gitignore ├── build.gradle ├── dictionary.txt ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ ├── com │ │ ├── davemorrissey │ │ │ └── labs │ │ │ │ └── subscaleview │ │ │ │ ├── ImageSource.java │ │ │ │ ├── ImageViewState.java │ │ │ │ ├── SubsamplingScaleImageView.java │ │ │ │ └── decoder │ │ │ │ ├── CompatDecoderFactory.java │ │ │ │ ├── DecoderFactory.java │ │ │ │ ├── ImageDecoder.java │ │ │ │ ├── ImageRegionDecoder.java │ │ │ │ ├── SkiaImageDecoder.java │ │ │ │ ├── SkiaImageRegionDecoder.java │ │ │ │ └── SkiaPooledImageRegionDecoder.java │ │ └── tomclaw │ │ │ └── imageloader │ │ │ ├── SimpleImageLoader.java │ │ │ ├── core │ │ │ ├── Decoder.java │ │ │ ├── DiskCache.java │ │ │ ├── DiskCacheImpl.java │ │ │ ├── FileProvider.java │ │ │ ├── FileProviderImpl.java │ │ │ ├── Handlers.java │ │ │ ├── ImageLoader.java │ │ │ ├── ImageLoaderImpl.java │ │ │ ├── Loader.java │ │ │ ├── MainExecutorImpl.java │ │ │ ├── MemoryCache.java │ │ │ ├── MemoryCacheImpl.java │ │ │ ├── Result.java │ │ │ ├── ViewHolder.java │ │ │ └── ViewSize.java │ │ │ └── util │ │ │ ├── BitmapDecoder.java │ │ │ ├── ImageViewHandlers.java │ │ │ ├── ImageViewHolder.java │ │ │ ├── ImageViews.java │ │ │ └── loader │ │ │ ├── ContentLoader.java │ │ │ ├── FileLoader.java │ │ │ └── UrlLoader.java │ └── it │ │ └── pgp │ │ ├── Native.java │ │ └── xfiles │ │ ├── BrowserItem.java │ │ ├── BrowserViewPager.java │ │ ├── CopyListUris.java │ │ ├── CopyMoveListPathContent.java │ │ ├── EffectActivity.java │ │ ├── FavoritesActivity.java │ │ ├── FindActivity.java │ │ ├── GalleryViewPager.java │ │ ├── MainActivity.java │ │ ├── MediaGallery.java │ │ ├── MediaGalleryActivity.java │ │ ├── PermissionManagementActivity.java │ │ ├── RestarterActivity.java │ │ ├── SettingsLauncherActivity.java │ │ ├── SortingItem.java │ │ ├── SwipeRefreshLayoutChildCanScroll.java │ │ ├── XREDirectShareActivity.java │ │ ├── XRE_RHSS_Widget.java │ │ ├── adapters │ │ ├── BrowserAdapter.java │ │ ├── BrowserGridAdapter.java │ │ ├── BrowserListAdapter.java │ │ ├── BrowserPagerAdapter.java │ │ ├── ContinuousSelectionAdapter.java │ │ ├── ExtendedSimpleAdapter.java │ │ ├── ExtractResultsAdapter.java │ │ ├── FavoritesPagerAdapter.java │ │ ├── FindResultsAdapter.java │ │ ├── GalleryPagerAdapter.java │ │ ├── HashAlgorithmsAdapter.java │ │ ├── HorizontalListAdapter.java │ │ ├── LocalFavoritesAdapter.java │ │ ├── OperationalPagerAdapter.java │ │ ├── QuickPathsAdapter.java │ │ ├── RecentPositionsAdapter.java │ │ ├── SftpFavoritesAdapter.java │ │ ├── SmbFavoritesAdapter.java │ │ ├── XFilesRemoteEndpointAdapter.java │ │ ├── XreAnnouncesAdapter.java │ │ ├── XreFavoritesAdapter.java │ │ └── continuousselection │ │ │ ├── CSCheckboxes.java │ │ │ ├── ContSelHandlingLayout.java │ │ │ ├── ContSelListener.java │ │ │ ├── ContSelListenerGrid.java │ │ │ └── ContSelListenerList.java │ │ ├── comparators │ │ ├── AdvancedComparator.java │ │ ├── AdvancedComparatorStrategy.java │ │ └── FilenameComparator.java │ │ ├── dialogs │ │ ├── AdvancedSortingDialog.java │ │ ├── BaseDialog.java │ │ ├── BulkRenameDialog.java │ │ ├── ChecksumActivity.java │ │ ├── CloseActiveServersDialog.java │ │ ├── ConflictDialog.java │ │ ├── CreateFileOrDirectoryDialog.java │ │ ├── CreateLinkDialog.java │ │ ├── FilterSelectionDialog.java │ │ ├── GenericChangeDirectoryDialog.java │ │ ├── ImmersiveModeDialog.java │ │ ├── InsertEditLocalFavoritesDialog.java │ │ ├── InsertEditSftpFavoritesDialog.java │ │ ├── InsertEditXreFavoritesDialog.java │ │ ├── OpenAsDialog.java │ │ ├── PropertiesDialog.java │ │ ├── RamdiskDialog.java │ │ ├── RemoteRHServerManagementDialog.java │ │ ├── RenameDialog.java │ │ ├── SSHAlreadyInKnownHostsDialog.java │ │ ├── SSHKnownHostsBaseDialog.java │ │ ├── SSHNotInKnownHostsDialog.java │ │ ├── UpdateCheckDialog.java │ │ ├── XFilesRemoteSessionsManagementActivity.java │ │ └── compress │ │ │ ├── AskPasswordDialogOnExtract.java │ │ │ ├── AskPasswordDialogOnListing.java │ │ │ ├── CompressActivity.java │ │ │ └── ExtractActivity.java │ │ ├── dragdroplist │ │ ├── DragDropItemTouchHelperCallback.java │ │ └── DragNDropAdapter.java │ │ ├── enums │ │ ├── ArchiveType.java │ │ ├── BrowserViewMode.java │ │ ├── ComparatorField.java │ │ ├── CopyMoveMode.java │ │ ├── FileIOMode.java │ │ ├── FileMode.java │ │ ├── FileOpsAction.java │ │ ├── FileOpsErrorCodes.java │ │ ├── ForegroundServiceType.java │ │ ├── OutputArchiveType.java │ │ ├── ProviderType.java │ │ ├── ServiceStatus.java │ │ ├── SshKeyType.java │ │ ├── WIFI_AP_STATE.java │ │ └── conflicthandling │ │ │ ├── ConflictDecision.java │ │ │ ├── ConflictType.java │ │ │ └── ErrorDecision.java │ │ ├── exceptions │ │ ├── DirCommanderException.java │ │ └── InterruptedTransferAsIOException.java │ │ ├── fileservers │ │ ├── FileServer.java │ │ ├── HTTPSessionThread.java │ │ ├── SimpleFTPServer.java │ │ ├── SimpleFileServer.java │ │ └── SimpleHTTPServer.java │ │ ├── io │ │ ├── FlushingBufferedOutputStream.java │ │ ├── RobustLocalFileInputStream.java │ │ └── RobustLocalFileOutputStream.java │ │ ├── items │ │ ├── BulkRenameItem.java │ │ ├── FileCreationAdvancedOptions.java │ │ ├── FolderStatsItem.java │ │ ├── MultiStatsItem.java │ │ └── SingleStatsItem.java │ │ ├── roothelperclient │ │ ├── ControlCodes.java │ │ ├── FindInArchiveThread.java │ │ ├── FindManager.java │ │ ├── FindUpdatesThread.java │ │ ├── HashRequestCodes.java │ │ ├── RHSSServerStatus.java │ │ ├── RelativeExtractEntries.java │ │ ├── RemoteClientManager.java │ │ ├── RemoteManager.java │ │ ├── RemoteServerManager.java │ │ ├── ResponseCodes.java │ │ ├── RootHandler.java │ │ ├── RootHelperClient.java │ │ ├── StreamCiphers.java │ │ ├── reqs │ │ │ ├── BaseRHRequest.java │ │ │ ├── ListOfPathPairs_rq.java │ │ │ ├── PairOfPaths_rq.java │ │ │ ├── SinglePath_rq.java │ │ │ ├── compress_rq.java │ │ │ ├── compress_rq_options.java │ │ │ ├── copylist_rq.java │ │ │ ├── create_rq.java │ │ │ ├── del_rq.java │ │ │ ├── exists_rq.java │ │ │ ├── extract_rq.java │ │ │ ├── fileio_rq.java │ │ │ ├── find_rq.java │ │ │ ├── hash_rq.java │ │ │ ├── link_rq.java │ │ │ ├── ls_archive_rq.java │ │ │ ├── ls_rq.java │ │ │ ├── movelist_rq.java │ │ │ ├── multiStats_rq.java │ │ │ ├── multi_extract_rq.java │ │ │ ├── openssh_ed25519_keygen_rq.java │ │ │ ├── openssl_rsa_pem_keygen_rq.java │ │ │ ├── retrieveHomePath_rq.java │ │ │ ├── setAttributes_rq.java │ │ │ ├── setDates_rq.java │ │ │ ├── setOwnership_rq.java │ │ │ ├── setPermission_rq.java │ │ │ ├── singleStats_rq.java │ │ │ └── test_rq.java │ │ └── resps │ │ │ ├── exists_resp.java │ │ │ ├── find_resp.java │ │ │ ├── folderStats_resp.java │ │ │ ├── ls_resp.java │ │ │ ├── singleStats_resp.java │ │ │ └── ssh_keygen_resp.java │ │ ├── service │ │ ├── BaseBackgroundService.java │ │ ├── BaseBackgroundTask.java │ │ ├── CompressService.java │ │ ├── CompressTask.java │ │ ├── CopyMoveService.java │ │ ├── CopyMoveTask.java │ │ ├── CreateFileService.java │ │ ├── CreateFileTask.java │ │ ├── ExtractService.java │ │ ├── ExtractTask.java │ │ ├── FindService.java │ │ ├── FindTask.java │ │ ├── HTTPDownloadService.java │ │ ├── HTTPDownloadTask.java │ │ ├── HTTPUploadService.java │ │ ├── HTTPUploadTask.java │ │ ├── IndeterminateAsyncTask.java │ │ ├── NonInteractiveSftpService.java │ │ ├── NonInteractiveSftpTask.java │ │ ├── NonInteractiveSmbService.java │ │ ├── NonInteractiveSmbTask.java │ │ ├── NonInteractiveXFilesRemoteTransferService.java │ │ ├── NonInteractiveXFilesRemoteTransferTask.java │ │ ├── RootHelperClientTask.java │ │ ├── SocketNames.java │ │ ├── TestService.java │ │ ├── params │ │ │ ├── CompressParams.java │ │ │ ├── CopyMoveParams.java │ │ │ ├── CreateFileParams.java │ │ │ ├── DownloadParams.java │ │ │ ├── ExtractParams.java │ │ │ ├── FindParams.java │ │ │ └── TestParams.java │ │ └── visualization │ │ │ ├── MovingRibbon.java │ │ │ ├── MovingRibbonTwoBars.java │ │ │ ├── ProgressIndicator.java │ │ │ ├── ViewOverlay.java │ │ │ └── ViewType.java │ │ ├── sftpclient │ │ ├── AuthData.java │ │ ├── CustomizedAndroidCipherSuiteConfig.java │ │ ├── IdentitiesVaultAdapter.java │ │ ├── InsertEditDialog.java │ │ ├── InsertFailedException.java │ │ ├── InteractiveHostKeyVerifier.java │ │ ├── SFTPProvider.java │ │ ├── SSHKeyInfoDialog.java │ │ ├── SSHKeygenDialog.java │ │ ├── VaultActivity.java │ │ ├── VaultAdapter.java │ │ ├── XFileSystemFile.java │ │ ├── XProgress.java │ │ ├── XSFTPClient.java │ │ ├── XSFTPFileTransfer.java │ │ ├── XSSHClient.java │ │ └── XTransferListener.java │ │ ├── smbclient │ │ ├── SmbAuthData.java │ │ ├── SmbProvider.java │ │ ├── SmbVaultActivity.java │ │ └── SmbVaultAdapter.java │ │ ├── utils │ │ ├── ArchiveVMap.java │ │ ├── ArrayTextView.java │ │ ├── BidirectionalMap.java │ │ ├── CheckableSingleExecutor.java │ │ ├── Checksums.java │ │ ├── ContentProviderUtils.java │ │ ├── DirCommander.java │ │ ├── DirTreeWalker.java │ │ ├── DirTreeWalkerRel.java │ │ ├── DiskHelper.java │ │ ├── FavoritesList.java │ │ ├── FileOperationHelper.java │ │ ├── FileSaveFragment.java │ │ ├── FileSelectFragment.java │ │ ├── GenericDBHelper.java │ │ ├── GenericMRU.java │ │ ├── HashView.java │ │ ├── IntentUtil.java │ │ ├── MRUArray.java │ │ ├── Misc.java │ │ ├── NetworkUtils.java │ │ ├── Pair.java │ │ ├── Predicate.java │ │ ├── ProgressConflictHandler.java │ │ ├── SelectImageButtonListener.java │ │ ├── StreamsPair.java │ │ ├── VMap.java │ │ ├── XFilesUtils.java │ │ ├── dircontent │ │ │ ├── ArchiveSubDirWithContent.java │ │ │ ├── GenericDirWithContent.java │ │ │ ├── LocalDirWithContent.java │ │ │ ├── SftpDirWithContent.java │ │ │ ├── SmbDirWithContent.java │ │ │ └── XFilesRemoteDirWithContent.java │ │ ├── iterators │ │ │ ├── VMapAbstractIterable.java │ │ │ ├── VMapChildParentIterable.java │ │ │ ├── VMapFullTreeIterable.java │ │ │ └── VMapSubTreeIterable.java │ │ ├── oreoap │ │ │ ├── MyOnStartTetheringCallback.java │ │ │ ├── MyOreoWifiManager.java │ │ │ └── PreOreoWifiManager.java │ │ ├── pathcontent │ │ │ ├── ArchivePathContent.java │ │ │ ├── BasePathContent.java │ │ │ ├── LocalPathContent.java │ │ │ ├── SFTPPathContent.java │ │ │ ├── SMBPathContent.java │ │ │ └── XREPathContent.java │ │ ├── popupwindow │ │ │ ├── MovablePopupWindowWithAutoClose.java │ │ │ └── PopupWindowUtils.java │ │ └── wifi │ │ │ ├── OreoWifiAPManager.java │ │ │ ├── WifiApManager.java │ │ │ └── WifiButtonsLayout.java │ │ └── viewmodels │ │ ├── PasteableEditText.java │ │ ├── TouchImageView.java │ │ └── XREDirectoryViewModel.java │ └── res │ ├── anim │ ├── fade_in.xml │ └── fade_out.xml │ ├── drawable-hdpi │ ├── ic_notification_ime_default.png │ ├── xf_arrow_left.png │ ├── xf_arrow_right.png │ ├── xf_copy.png │ ├── xf_dir_blu.png │ ├── xf_new_dir.png │ ├── xf_new_file.png │ ├── xf_recycle_bin.png │ ├── xf_share.png │ ├── xf_up_dir.png │ ├── xf_view_mode.png │ ├── xf_xre_server_down.png │ ├── xf_xre_server_up.png │ ├── xfiles_anytype.png │ ├── xfiles_archive.png │ ├── xfiles_archive_7z.png │ ├── xfiles_archive_apk.png │ ├── xfiles_archive_bz2.png │ ├── xfiles_archive_cab.png │ ├── xfiles_archive_gz.png │ ├── xfiles_archive_rar.png │ ├── xfiles_archive_tar.png │ ├── xfiles_archive_xz.png │ ├── xfiles_archive_zip.png │ ├── xfiles_audio.png │ ├── xfiles_cut.png │ ├── xfiles_extract.png │ ├── xfiles_favorites.png │ ├── xfiles_file_icon.png │ ├── xfiles_find.png │ ├── xfiles_hotspot_off.png │ ├── xfiles_hotspot_on.png │ ├── xfiles_hotspot_unavailable.png │ ├── xfiles_image.png │ ├── xfiles_link_icon.png │ ├── xfiles_new_app_icon.png │ ├── xfiles_paste.png │ ├── xfiles_root_off.png │ ├── xfiles_root_on.png │ ├── xfiles_sort_icon.png │ ├── xfiles_sort_special.png │ ├── xfiles_switch_operation_buttons_blue.png │ ├── xfiles_switch_operation_buttons_green.png │ ├── xfiles_system_back.png │ ├── xfiles_system_home.png │ ├── xfiles_system_recent.png │ ├── xfiles_test.png │ ├── xfiles_text.png │ ├── xfiles_video.png │ ├── xfiles_wifi_enabled_not_connected.png │ ├── xfiles_wifi_off.png │ ├── xfiles_wifi_on.png │ └── xfiles_wifi_unavailable.png │ ├── drawable-ldpi │ ├── xf_arrow_left.png │ ├── xf_arrow_right.png │ ├── xf_copy.png │ ├── xf_dir_blu.png │ ├── xf_new_dir.png │ ├── xf_new_file.png │ ├── xf_recycle_bin.png │ ├── xf_share.png │ ├── xf_up_dir.png │ ├── xf_view_mode.png │ ├── xf_xre_server_down.png │ ├── xf_xre_server_up.png │ ├── xfiles_anytype.png │ ├── xfiles_archive.png │ ├── xfiles_archive_7z.png │ ├── xfiles_archive_apk.png │ ├── xfiles_archive_bz2.png │ ├── xfiles_archive_cab.png │ ├── xfiles_archive_gz.png │ ├── xfiles_archive_rar.png │ ├── xfiles_archive_tar.png │ ├── xfiles_archive_xz.png │ ├── xfiles_archive_zip.png │ ├── xfiles_audio.png │ ├── xfiles_cut.png │ ├── xfiles_extract.png │ ├── xfiles_favorites.png │ ├── xfiles_file_icon.png │ ├── xfiles_find.png │ ├── xfiles_hotspot_off.png │ ├── xfiles_hotspot_on.png │ ├── xfiles_hotspot_unavailable.png │ ├── xfiles_image.png │ ├── xfiles_link_icon.png │ ├── xfiles_new_app_icon.png │ ├── xfiles_paste.png │ ├── xfiles_root_off.png │ ├── xfiles_root_on.png │ ├── xfiles_switch_operation_buttons_blue.png │ ├── xfiles_switch_operation_buttons_green.png │ ├── xfiles_system_back.png │ ├── xfiles_system_home.png │ ├── xfiles_system_recent.png │ ├── xfiles_test.png │ ├── xfiles_text.png │ ├── xfiles_video.png │ ├── xfiles_wifi_enabled_not_connected.png │ ├── xfiles_wifi_off.png │ ├── xfiles_wifi_on.png │ └── xfiles_wifi_unavailable.png │ ├── drawable-mdpi │ ├── ic_media_stop.png │ ├── xf_arrow_left.png │ ├── xf_arrow_right.png │ ├── xf_copy.png │ ├── xf_dir_blu.png │ ├── xf_new_dir.png │ ├── xf_new_file.png │ ├── xf_recycle_bin.png │ ├── xf_share.png │ ├── xf_up_dir.png │ ├── xf_view_mode.png │ ├── xf_xre_server_down.png │ ├── xf_xre_server_up.png │ ├── xfiles_anytype.png │ ├── xfiles_archive.png │ ├── xfiles_archive_7z.png │ ├── xfiles_archive_apk.png │ ├── xfiles_archive_bz2.png │ ├── xfiles_archive_cab.png │ ├── xfiles_archive_gz.png │ ├── xfiles_archive_rar.png │ ├── xfiles_archive_tar.png │ ├── xfiles_archive_xz.png │ ├── xfiles_archive_zip.png │ ├── xfiles_audio.png │ ├── xfiles_cut.png │ ├── xfiles_extract.png │ ├── xfiles_favorites.png │ ├── xfiles_file_icon.png │ ├── xfiles_find.png │ ├── xfiles_hotspot_off.png │ ├── xfiles_hotspot_on.png │ ├── xfiles_hotspot_unavailable.png │ ├── xfiles_image.png │ ├── xfiles_link_icon.png │ ├── xfiles_new_app_icon.png │ ├── xfiles_paste.png │ ├── xfiles_root_off.png │ ├── xfiles_root_on.png │ ├── xfiles_sort_icon.png │ ├── xfiles_sort_special.png │ ├── xfiles_switch_operation_buttons_blue.png │ ├── xfiles_switch_operation_buttons_green.png │ ├── xfiles_system_back.png │ ├── xfiles_system_home.png │ ├── xfiles_system_recent.png │ ├── xfiles_test.png │ ├── xfiles_text.png │ ├── xfiles_video.png │ ├── xfiles_wifi_enabled_not_connected.png │ ├── xfiles_wifi_off.png │ ├── xfiles_wifi_on.png │ └── xfiles_wifi_unavailable.png │ ├── drawable-xhdpi │ ├── xf_arrow_left.png │ ├── xf_arrow_right.png │ ├── xf_copy.png │ ├── xf_dir_blu.png │ ├── xf_new_dir.png │ ├── xf_new_file.png │ ├── xf_recycle_bin.png │ ├── xf_share.png │ ├── xf_up_dir.png │ ├── xf_view_mode.png │ ├── xf_xre_server_down.png │ ├── xf_xre_server_up.png │ ├── xfiles_anytype.png │ ├── xfiles_archive.png │ ├── xfiles_archive_7z.png │ ├── xfiles_archive_apk.png │ ├── xfiles_archive_bz2.png │ ├── xfiles_archive_cab.png │ ├── xfiles_archive_gz.png │ ├── xfiles_archive_rar.png │ ├── xfiles_archive_tar.png │ ├── xfiles_archive_xz.png │ ├── xfiles_archive_zip.png │ ├── xfiles_audio.png │ ├── xfiles_cut.png │ ├── xfiles_extract.png │ ├── xfiles_favorites.png │ ├── xfiles_file_icon.png │ ├── xfiles_find.png │ ├── xfiles_hotspot_off.png │ ├── xfiles_hotspot_on.png │ ├── xfiles_hotspot_unavailable.png │ ├── xfiles_image.png │ ├── xfiles_link_icon.png │ ├── xfiles_new_app_icon.png │ ├── xfiles_paste.png │ ├── xfiles_root_off.png │ ├── xfiles_root_on.png │ ├── xfiles_sort_icon.png │ ├── xfiles_sort_special.png │ ├── xfiles_switch_operation_buttons_blue.png │ ├── xfiles_switch_operation_buttons_green.png │ ├── xfiles_system_back.png │ ├── xfiles_system_home.png │ ├── xfiles_system_recent.png │ ├── xfiles_test.png │ ├── xfiles_text.png │ ├── xfiles_video.png │ ├── xfiles_wifi_enabled_not_connected.png │ ├── xfiles_wifi_off.png │ ├── xfiles_wifi_on.png │ └── xfiles_wifi_unavailable.png │ ├── drawable-xxhdpi │ ├── xf_arrow_left.png │ ├── xf_arrow_right.png │ ├── xf_copy.png │ ├── xf_dir_blu.png │ ├── xf_new_dir.png │ ├── xf_new_file.png │ ├── xf_recycle_bin.png │ ├── xf_share.png │ ├── xf_up_dir.png │ ├── xf_view_mode.png │ ├── xf_xre_server_down.png │ ├── xf_xre_server_up.png │ ├── xfiles_anytype.png │ ├── xfiles_archive.png │ ├── xfiles_archive_7z.png │ ├── xfiles_archive_apk.png │ ├── xfiles_archive_bz2.png │ ├── xfiles_archive_cab.png │ ├── xfiles_archive_gz.png │ ├── xfiles_archive_rar.png │ ├── xfiles_archive_tar.png │ ├── xfiles_archive_xz.png │ ├── xfiles_archive_zip.png │ ├── xfiles_audio.png │ ├── xfiles_cut.png │ ├── xfiles_extract.png │ ├── xfiles_favorites.png │ ├── xfiles_file_icon.png │ ├── xfiles_hotspot_off.png │ ├── xfiles_hotspot_on.png │ ├── xfiles_hotspot_unavailable.png │ ├── xfiles_image.png │ ├── xfiles_link_icon.png │ ├── xfiles_new_app_icon.png │ ├── xfiles_root_off.png │ ├── xfiles_root_on.png │ ├── xfiles_sort_icon.png │ ├── xfiles_sort_special.png │ ├── xfiles_switch_operation_buttons_blue.png │ ├── xfiles_switch_operation_buttons_green.png │ ├── xfiles_system_back.png │ ├── xfiles_system_home.png │ ├── xfiles_system_recent.png │ ├── xfiles_test.png │ ├── xfiles_text.png │ ├── xfiles_video.png │ ├── xfiles_wifi_enabled_not_connected.png │ ├── xfiles_wifi_off.png │ ├── xfiles_wifi_on.png │ └── xfiles_wifi_unavailable.png │ ├── drawable-xxxhdpi │ ├── xf_arrow_left.png │ ├── xf_arrow_right.png │ ├── xf_copy.png │ ├── xf_dir_blu.png │ ├── xf_new_dir.png │ ├── xf_new_file.png │ ├── xf_recycle_bin.png │ ├── xf_share.png │ ├── xf_up_dir.png │ ├── xf_view_mode.png │ ├── xf_xre_server_down.png │ ├── xf_xre_server_up.png │ ├── xfiles_anytype.png │ ├── xfiles_archive.png │ ├── xfiles_archive_7z.png │ ├── xfiles_archive_apk.png │ ├── xfiles_archive_bz2.png │ ├── xfiles_archive_cab.png │ ├── xfiles_archive_gz.png │ ├── xfiles_archive_rar.png │ ├── xfiles_archive_tar.png │ ├── xfiles_archive_xz.png │ ├── xfiles_archive_zip.png │ ├── xfiles_audio.png │ ├── xfiles_cut.png │ ├── xfiles_extract.png │ ├── xfiles_favorites.png │ ├── xfiles_file_icon.png │ ├── xfiles_hotspot_off.png │ ├── xfiles_hotspot_on.png │ ├── xfiles_hotspot_unavailable.png │ ├── xfiles_image.png │ ├── xfiles_link_icon.png │ ├── xfiles_new_app_icon.png │ ├── xfiles_root_off.png │ ├── xfiles_root_on.png │ ├── xfiles_switch_operation_buttons_blue.png │ ├── xfiles_switch_operation_buttons_green.png │ ├── xfiles_system_back.png │ ├── xfiles_system_home.png │ ├── xfiles_system_recent.png │ ├── xfiles_test.png │ ├── xfiles_text.png │ ├── xfiles_video.png │ ├── xfiles_wifi_enabled_not_connected.png │ ├── xfiles_wifi_off.png │ ├── xfiles_wifi_on.png │ └── xfiles_wifi_unavailable.png │ ├── drawable │ ├── about_background.xml │ ├── hashview_window_background.xml │ ├── ic_image.xml │ ├── ic_image_remove.xml │ ├── media_gallery_placeholder.xml │ ├── root_background.xml │ └── xf_widget_thumbnail.png │ ├── layout-television │ ├── activity_main_with_pager.xml │ └── horizontal_operational_layout.xml │ ├── layout │ ├── about_dialog.xml │ ├── active_remote_servers_layout.xml │ ├── activity_find.xml │ ├── activity_gallery.xml │ ├── activity_main_with_pager.xml │ ├── activity_permission_management.xml │ ├── activity_xre_direct_share.xml │ ├── advanced_sorting_dialog.xml │ ├── ask_password_dialog.xml │ ├── browser_item.xml │ ├── browser_item_grid.xml │ ├── browser_page.xml │ ├── bulk_rename_dialog.xml │ ├── change_directory_dialog_frame_archive.xml │ ├── change_directory_dialog_frame_http.xml │ ├── change_directory_dialog_frame_local.xml │ ├── change_directory_dialog_frame_sftp.xml │ ├── change_directory_dialog_frame_smb.xml │ ├── change_directory_dialog_frame_xre.xml │ ├── change_directory_generic_dialog.xml │ ├── checksum_base_dialog.xml │ ├── checksum_label_item.xml │ ├── compress_layout.xml │ ├── conflict_dialog.xml │ ├── cont_sel.xml │ ├── create_file_dir_dialog.xml │ ├── create_link_dialog.xml │ ├── dircommander_popup_window.xml │ ├── dragitem.xml │ ├── empty.xml │ ├── extract_layout.xml │ ├── extract_results_dialog.xml │ ├── extract_results_item.xml │ ├── favorites.xml │ ├── favorites_local.xml │ ├── favorites_local_list_item.xml │ ├── favorites_sftp.xml │ ├── favorites_smb.xml │ ├── favorites_xfiles_remote.xml │ ├── favorites_xre_list_item.xml │ ├── filter_selection_dialog.xml │ ├── find_results.xml │ ├── gridview_layout.xml │ ├── hash_labels_legend.xml │ ├── hashview_dialog.xml │ ├── hashview_popup_window.xml │ ├── horizontal_operational_layout.xml │ ├── item_image.xml │ ├── item_image_horizontal.xml │ ├── jsimpleimageloader_main.xml │ ├── listview_layout.xml │ ├── multiselect_buttons_layout.xml │ ├── open_as_dialog.xml │ ├── open_as_dialog_item.xml │ ├── overriding_home_buttons_operational_layout.xml │ ├── pager_item.xml │ ├── pasteable_edittext.xml │ ├── properties_aggragates_dialog.xml │ ├── properties_base_dialog.xml │ ├── properties_file_dialog.xml │ ├── quickfind_edittext_layout.xml │ ├── recycler_item.xml │ ├── remote_rh_server_management_dialog.xml │ ├── rhss_server_sessions_item.xml │ ├── ribbon_one.xml │ ├── ribbon_two.xml │ ├── sftp_dialog_insert_item.xml │ ├── sftp_id_list_item.xml │ ├── sftp_list_header_item.xml │ ├── sftp_list_item.xml │ ├── sftp_vault_list_layout.xml │ ├── single_filename_dialog.xml │ ├── smb_list_header_item.xml │ ├── smb_list_item.xml │ ├── smb_vault_list_layout.xml │ ├── sorting_dialog_header_view.xml │ ├── ssh_already_in_known_hosts_dialog.xml │ ├── ssh_key_info_dialog.xml │ ├── ssh_keygen_dialog.xml │ ├── ssh_not_in_known_hosts_dialog.xml │ ├── standard_operational_layout.xml │ ├── update_check_dialog.xml │ ├── xfiles_remote_sessions_management.xml │ ├── xre_path_dialog.xml │ ├── xre_rhss_button_and_active_ips.xml │ └── xre_rhss_widget.xml │ ├── menu │ ├── menu_2ndlevel_share.xml │ ├── menu_2ndlevel_share_local_folder.xml │ ├── menu_browserview.xml │ ├── menu_checkbox.xml │ ├── menu_checksum.xml │ ├── menu_credentials_favorites.xml │ ├── menu_fast_changedir.xml │ ├── menu_find.xml │ ├── menu_find_multi.xml │ ├── menu_multi.xml │ ├── menu_multi_remote.xml │ ├── menu_multi_within_archive.xml │ ├── menu_new.xml │ ├── menu_single.xml │ ├── menu_single_local_folder.xml │ ├── menu_single_remote.xml │ ├── menu_single_remote_folder.xml │ ├── menu_single_within_archive.xml │ └── menu_sort.xml │ ├── values-v14 │ └── dimens.xml │ ├── values-v21 │ └── styles.xml │ ├── values-v24 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ ├── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ ├── provider_paths.xml │ └── xre_rhss_widget_info.xml ├── build.gradle ├── buildRootHelpersAndroid.bat ├── buildRootHelpersAndroid.sh ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.cirrus.yml: -------------------------------------------------------------------------------- 1 | container: 2 | image: cirrusci/android-sdk:30 3 | cpu: 4 4 | memory: 16G 5 | 6 | check_android_task: 7 | ndk_install_script: 8 | - echo y | sdkmanager "tools" 9 | - echo y | sdkmanager "platform-tools" 10 | - echo y | sdkmanager "tools" 11 | - echo y | sdkmanager "build-tools;30.0.3" 12 | - echo y | sdkmanager "platforms;android-30" 13 | - echo y | sdkmanager "ndk-bundle" 14 | - echo y | sdkmanager "ndk;21.3.6528147" 15 | - echo y | sdkmanager "cmake;3.10.2.4988404" 16 | 17 | assemble_script: 18 | - export PATH=$PATH:$ANDROID_HOME/ndk/21.3.6528147 19 | - ./gradlew clean assemble 20 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/dictionary.txt: -------------------------------------------------------------------------------- 1 | q 2 | w 3 | e 4 | r 5 | t 6 | y 7 | u 8 | i 9 | o 10 | p 11 | a 12 | s 13 | d 14 | f 15 | g 16 | h 17 | j 18 | k 19 | l 20 | z 21 | x 22 | c 23 | v 24 | b 25 | n 26 | m 27 | Q 28 | W 29 | E 30 | R 31 | T 32 | Y 33 | U 34 | I 35 | O 36 | P 37 | A 38 | S 39 | D 40 | F 41 | G 42 | H 43 | J 44 | K 45 | L 46 | Z 47 | X 48 | C 49 | V 50 | B 51 | N 52 | M 53 | _ 54 | $ 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java: -------------------------------------------------------------------------------- 1 | package com.davemorrissey.labs.subscaleview; 2 | 3 | import android.graphics.PointF; 4 | import android.support.annotation.NonNull; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * Wraps the scale, center and orientation of a displayed image for easy restoration on screen rotate. 10 | */ 11 | @SuppressWarnings("WeakerAccess") 12 | public class ImageViewState implements Serializable { 13 | 14 | private final float scale; 15 | 16 | private final float centerX; 17 | 18 | private final float centerY; 19 | 20 | private final int orientation; 21 | 22 | public ImageViewState(float scale, @NonNull PointF center, int orientation) { 23 | this.scale = scale; 24 | this.centerX = center.x; 25 | this.centerY = center.y; 26 | this.orientation = orientation; 27 | } 28 | 29 | public float getScale() { 30 | return scale; 31 | } 32 | 33 | @NonNull public PointF getCenter() { 34 | return new PointF(centerX, centerY); 35 | } 36 | 37 | public int getOrientation() { 38 | return orientation; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/davemorrissey/labs/subscaleview/decoder/DecoderFactory.java: -------------------------------------------------------------------------------- 1 | package com.davemorrissey.labs.subscaleview.decoder; 2 | 3 | 4 | import android.support.annotation.NonNull; 5 | 6 | import java.lang.reflect.InvocationTargetException; 7 | 8 | /** 9 | * Interface for {@link ImageDecoder} and {@link ImageRegionDecoder} factories. 10 | * @param the class of decoder that will be produced. 11 | */ 12 | public interface DecoderFactory { 13 | 14 | /** 15 | * Produce a new instance of a decoder with type {@link T}. 16 | * @return a new instance of your decoder. 17 | * @throws IllegalAccessException if the factory class cannot be instantiated. 18 | * @throws InstantiationException if the factory class cannot be instantiated. 19 | * @throws NoSuchMethodException if the factory class cannot be instantiated. 20 | * @throws InvocationTargetException if the factory class cannot be instantiated. 21 | */ 22 | @NonNull T make() throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.java: -------------------------------------------------------------------------------- 1 | package com.davemorrissey.labs.subscaleview.decoder; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.net.Uri; 6 | import android.support.annotation.NonNull; 7 | 8 | /** 9 | * Interface for image decoding classes, allowing the default {@link android.graphics.BitmapFactory} 10 | * based on the Skia library to be replaced with a custom class. 11 | */ 12 | public interface ImageDecoder { 13 | 14 | /** 15 | * Decode an image. The URI can be in one of the following formats: 16 | *
17 | * File: file:///scard/picture.jpg 18 | *
19 | * Asset: file:///android_asset/picture.png 20 | *
21 | * Resource: android.resource://com.example.app/drawable/picture 22 | * 23 | * @param context Application context 24 | * @param uri URI of the image 25 | * @return the decoded bitmap 26 | * @throws Exception if decoding fails. 27 | */ 28 | @NonNull Bitmap decode(Context context, @NonNull Uri uri) throws Exception; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/Decoder.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | import java.io.File; 6 | 7 | public interface Decoder { 8 | 9 | boolean probe(File file); 10 | 11 | @Nullable Result decode(File file, int width, int height); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/DiskCache.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | import com.tomclaw.cache.RecordNotFoundException; 6 | 7 | import java.io.File; 8 | import java.io.IOException; 9 | 10 | public interface DiskCache { 11 | 12 | @Nullable File get(String key); 13 | 14 | File put(String key, File file) throws IOException; 15 | 16 | void remove(String key) throws IOException, RecordNotFoundException; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/DiskCacheImpl.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import com.tomclaw.cache.DiskLruCache; 4 | import com.tomclaw.cache.RecordNotFoundException; 5 | 6 | import java.io.File; 7 | import java.io.IOException; 8 | 9 | public class DiskCacheImpl implements DiskCache { 10 | 11 | private final DiskLruCache diskLruCache; 12 | 13 | public DiskCacheImpl(DiskLruCache diskLruCache) { 14 | this.diskLruCache = diskLruCache; 15 | } 16 | 17 | @Override 18 | public File get(String key) { 19 | return diskLruCache.get(key); 20 | } 21 | 22 | @Override 23 | public File put(String key, File file) throws IOException { 24 | return diskLruCache.put(key, file); 25 | } 26 | 27 | @Override 28 | public void remove(String key) throws IOException, RecordNotFoundException { 29 | diskLruCache.delete(key); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/FileProvider.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.net.Uri; 4 | 5 | import java.io.File; 6 | 7 | 8 | public interface FileProvider { 9 | File getFile(Uri uri); 10 | 11 | default File getFile(String url) { 12 | return getFile(Uri.parse(url)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/Handlers.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | public class Handlers { 4 | @FunctionalInterface 5 | public interface SuccessInterface { 6 | void fn(ViewHolder viewHolder, Result result); 7 | } 8 | 9 | @FunctionalInterface 10 | public interface PlaceholderOrErrorInterface { 11 | void fn(ViewHolder viewHolder); 12 | } 13 | 14 | public SuccessInterface success = (v,r) -> {}; 15 | public PlaceholderOrErrorInterface placeholder = v -> {}; 16 | public PlaceholderOrErrorInterface error = v -> {}; 17 | 18 | public void setPlaceholder(PlaceholderOrErrorInterface placeholder) { 19 | this.placeholder = placeholder; 20 | } 21 | 22 | public void setError(PlaceholderOrErrorInterface error) { 23 | this.error = error; 24 | } 25 | 26 | public void setSuccess(SuccessInterface success) { 27 | this.success = success; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import java.security.NoSuchAlgorithmException; 4 | 5 | public interface ImageLoader { 6 | 7 | void load(ViewHolder view, String uriString, Handlers handlers) throws NoSuchAlgorithmException; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/Loader.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import java.io.File; 4 | import java.util.List; 5 | 6 | public interface Loader { 7 | 8 | List getSchemes(); 9 | 10 | boolean load(String uriString, File file); 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/MainExecutorImpl.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.os.Handler; 4 | import android.os.Looper; 5 | 6 | import java.util.concurrent.Executor; 7 | 8 | public class MainExecutorImpl implements Executor { 9 | 10 | private final Handler mainHandler = new Handler(Looper.getMainLooper()); 11 | 12 | private boolean isMainThread() { 13 | return mainHandler.getLooper().getThread() == Thread.currentThread(); 14 | } 15 | 16 | @Override 17 | public void execute(Runnable runnable) { 18 | if(isMainThread()) runnable.run(); 19 | else mainHandler.post(runnable); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/MemoryCache.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | public interface MemoryCache { 6 | 7 | @Nullable Result get(String key); 8 | 9 | @Nullable Result put(String key, Result result); 10 | 11 | @Nullable Result remove(String key); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/MemoryCacheImpl.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.util.LruCache; 4 | 5 | public class MemoryCacheImpl implements MemoryCache { 6 | 7 | private final LruCache bitmapLruCache; 8 | 9 | public MemoryCacheImpl() { 10 | int maxMemory = (int)Runtime.getRuntime().maxMemory(); 11 | int cacheSize = maxMemory / 12; 12 | bitmapLruCache = new LruCache(cacheSize) { 13 | @Override 14 | protected int sizeOf(String key, Result value) { 15 | return value.getByteCount(); 16 | } 17 | }; 18 | } 19 | 20 | @Override 21 | public Result get(String key) { 22 | return bitmapLruCache.get(key); 23 | } 24 | 25 | @Override 26 | public Result put(String key, Result result) { 27 | return bitmapLruCache.put(key, result); 28 | } 29 | 30 | @Override 31 | public Result remove(String key) { 32 | return bitmapLruCache.remove(key); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/Result.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | public interface Result { 6 | 7 | int getByteCount(); 8 | 9 | boolean isRecycled(); 10 | 11 | Drawable getDrawable(); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/ViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | public interface ViewHolder { 6 | 7 | @Nullable ViewSize optSize(); 8 | 9 | ViewSize getSize(); 10 | 11 | @Nullable Object getTag(); 12 | 13 | void setTag(Object tag); 14 | 15 | T get(); 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/tomclaw/imageloader/core/ViewSize.java: -------------------------------------------------------------------------------- 1 | package com.tomclaw.imageloader.core; 2 | 3 | public class ViewSize { 4 | public int width; 5 | public int height; 6 | 7 | public ViewSize(int width, int height) { 8 | this.width = width; 9 | this.height = height; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/Native.java: -------------------------------------------------------------------------------- 1 | package it.pgp; 2 | 3 | /** 4 | * Created by pgp on 07/01/18 5 | */ 6 | 7 | public class Native { 8 | 9 | // just ignore the IDE's symbol resolution errors here, we don't need to put C/CPP headers here, 10 | // just the exported libr.so (which is both executable - for su - and shared object - for jni) 11 | 12 | public static native int isSymLink(String path); 13 | public static native String stringFromJNI(); 14 | public static native int nHashCode(byte[] input); 15 | public static native byte[] spongeForHashViewShake(byte[] input, int inputLen, int outputLen); 16 | // public static native void c20StreamGen(byte[] key, byte[] output); 17 | // public static native void spongeForHashView(byte[] input, byte[] output); 18 | // public static native void spongeForHashViewInPlace(byte[] input, int inputLen, byte[] output, int outputLen); 19 | public static native int sendDetachedFD(int udsToSendFdOver, int fdToSend); 20 | 21 | public static native long sendfstat(int udsToSendStatOver, int fd, String filename_); 22 | public static native String getPathFromFd(String fdNumAsString); 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/CopyListUris.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles; 2 | 3 | import android.net.Uri; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class CopyListUris extends CopyMoveListPathContent { 9 | 10 | public List contentUris; 11 | 12 | public CopyListUris(List contentUris) { 13 | super(); 14 | this.contentUris = contentUris; 15 | } 16 | 17 | public static CopyListUris getFromUriList(List uris) { 18 | List urisAsStrings = new ArrayList<>(); 19 | for (Uri uri : uris) urisAsStrings.add(uri.toString()); 20 | return new CopyListUris(urisAsStrings); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/FavoritesActivity.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles; 2 | 3 | import android.os.Bundle; 4 | import android.support.v4.view.ViewPager; 5 | 6 | import it.pgp.xfiles.adapters.FavoritesPagerAdapter; 7 | 8 | /** 9 | * Created by pgp on 06/07/17 10 | */ 11 | 12 | public class FavoritesActivity extends EffectActivity { 13 | 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | super.onCreate(savedInstanceState); 17 | setTitle("Favorites Manager"); 18 | setActivityIcon(R.drawable.xfiles_favorites); 19 | setContentView(R.layout.favorites); 20 | 21 | ViewPager viewPager = findViewById(R.id.favorites_viewpager); 22 | viewPager.setAdapter(new FavoritesPagerAdapter(this)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/RestarterActivity.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles; 2 | 3 | /** 4 | * Created by pgp on 13/07/17 5 | * Activity in standalone Dalvik process that restarts MainActivity 6 | * when permissions are granted on Android >= 6 7 | */ 8 | 9 | import android.app.Activity; 10 | import android.content.Intent; 11 | import android.os.Bundle; 12 | import android.util.Log; 13 | 14 | public class RestarterActivity extends Activity { 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | Log.d("RESTART","RESTART"); 19 | super.onCreate(savedInstanceState); 20 | setContentView(R.layout.empty); 21 | 22 | int targetPid = getIntent().getExtras().getInt(""); 23 | android.os.Process.sendSignal(targetPid,2); // SIGINT 24 | 25 | // start target activity again 26 | Intent i = new Intent(RestarterActivity.this,MainActivity.class); 27 | 28 | i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 29 | i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 30 | finish(); 31 | startActivity(i); 32 | 33 | // self kill process 34 | // android.os.Process.sendSignal(android.os.Process.myPid(),2); // SIGINT 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/SortingItem.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles; 2 | 3 | import it.pgp.xfiles.enums.ComparatorField; 4 | 5 | /** 6 | * Created by pgp on 28/10/16 7 | */ 8 | 9 | public class SortingItem { 10 | public ComparatorField comparatorField; 11 | private boolean selected; 12 | private boolean reversed; 13 | 14 | public SortingItem(ComparatorField comparatorField, boolean selected, boolean reversed) { 15 | this.comparatorField = comparatorField; 16 | this.selected = selected; 17 | this.reversed = reversed; 18 | } 19 | 20 | public boolean isSelected() { 21 | return selected; 22 | } 23 | public boolean isReversed() { 24 | return reversed; 25 | } 26 | 27 | public void setSelected(boolean selected) { 28 | this.selected = selected; 29 | } 30 | public void setReversed(boolean reversed) { 31 | this.reversed = reversed; 32 | } 33 | 34 | public void toggleSelected() { 35 | selected = !selected; 36 | } 37 | public void toggleReversed() { 38 | reversed = !reversed; 39 | } 40 | 41 | // DEBUG toString 42 | // return comparatorField.name1()+": "+(selected?"V":"O")+", "+(reversed?"V":"O"); 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/SwipeRefreshLayoutChildCanScroll.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles; 2 | 3 | import android.content.Context; 4 | import android.support.v4.widget.SwipeRefreshLayout; 5 | import android.util.AttributeSet; 6 | 7 | /** 8 | * Created by pgp on 03/11/16 9 | */ 10 | 11 | public class SwipeRefreshLayoutChildCanScroll extends SwipeRefreshLayout { 12 | MainActivity mainActivity; 13 | 14 | public SwipeRefreshLayoutChildCanScroll(Context context) { 15 | super(context); 16 | } 17 | 18 | public SwipeRefreshLayoutChildCanScroll(Context context, AttributeSet attrs) { 19 | super(context, attrs); 20 | } 21 | 22 | public void setParentActivity(MainActivity mainActivity) { 23 | this.mainActivity= mainActivity; 24 | } 25 | 26 | @Override 27 | public boolean canChildScrollUp() { 28 | return mainActivity.getCurrentMainBrowserView().canScrollVertically(-1); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/adapters/QuickPathsAdapter.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.adapters; 2 | 3 | import android.content.Context; 4 | import android.os.Environment; 5 | import android.widget.ArrayAdapter; 6 | 7 | import java.util.ArrayList; 8 | import java.util.Set; 9 | 10 | import it.pgp.xfiles.MainActivity; 11 | import it.pgp.xfiles.utils.DiskHelper; 12 | 13 | // currently used for showing external mounts 14 | // TODO to be generalized (e.g. show favorites and currently opened xre connections as well) 15 | public class QuickPathsAdapter extends ArrayAdapter { 16 | 17 | public static QuickPathsAdapter create(MainActivity context) { 18 | Set s = DiskHelper.getExternalMounts(context); 19 | s.add(Environment.getExternalStorageDirectory().getAbsolutePath()); 20 | return new QuickPathsAdapter(context, new ArrayList<>(s)); 21 | } 22 | 23 | public ArrayList objects; 24 | 25 | private QuickPathsAdapter(Context context, ArrayList objects) { 26 | super(context, android.R.layout.simple_list_item_1, objects); 27 | this.objects = objects; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/comparators/FilenameComparator.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.comparators; 2 | 3 | import java.util.Comparator; 4 | 5 | import it.pgp.xfiles.BrowserItem; 6 | 7 | /** 8 | * Created by pgp on 26/10/16 9 | */ 10 | 11 | public class FilenameComparator implements Comparator { 12 | @Override 13 | public int compare(BrowserItem o1, BrowserItem o2) { 14 | // directory priority (directories first, then files) 15 | if ((o1.isDirectory && o2.isDirectory)||(!o1.isDirectory && !o2.isDirectory)) 16 | return o1.getFilename().compareTo(o2.getFilename()); // both files or both dirs 17 | else if (!o1.isDirectory /* && o2.isDirectory */) return 1; 18 | else return -1; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/dialogs/BaseDialog.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.dialogs; 2 | 3 | import android.app.Activity; 4 | import android.app.Dialog; 5 | import android.support.annotation.NonNull; 6 | import android.view.Window; 7 | 8 | public class BaseDialog extends Dialog { 9 | public BaseDialog(@NonNull Activity activity) { 10 | super(activity); 11 | requestWindowFeature(Window.FEATURE_LEFT_ICON); 12 | } 13 | 14 | // https://stackoverflow.com/questions/11430253/how-to-set-icon-for-dialog-in-android 15 | public void setDialogIcon(int resId) { 16 | setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/dialogs/ImmersiveModeDialog.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.dialogs; 2 | 3 | import android.app.Dialog; 4 | import android.content.Context; 5 | import android.view.WindowManager; 6 | 7 | /** 8 | * Created by pgp on 26/10/16 9 | */ 10 | 11 | public class ImmersiveModeDialog extends Dialog { 12 | public ImmersiveModeDialog(Context context) { 13 | super(context); 14 | } 15 | 16 | @Override 17 | public void show() { 18 | // Set the dialog to not focusable. 19 | getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 20 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 21 | 22 | // copySystemUiVisibility(); 23 | // web source: http://stackoverflow.com/questions/22794049/how-to-maintain-the-immersive-mode-in-dialogs 24 | 25 | // Show the dialog with NavBar hidden. 26 | super.show(); 27 | 28 | // Set the dialog to focusable again. 29 | getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/CopyMoveMode.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | /** 4 | * Created by pgp on 31/10/16 5 | */ 6 | 7 | public enum CopyMoveMode { 8 | COPY, 9 | MOVE 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/FileIOMode.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | /** 4 | * Created by pgp on 06/11/17 5 | */ 6 | 7 | public enum FileIOMode { 8 | READFROMFILE, 9 | WRITETOFILE 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/FileMode.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | /** 4 | * Created by pgp on 31/10/16 5 | */ 6 | 7 | public enum FileMode { 8 | FILE(0644), 9 | DIRECTORY(0755); 10 | 11 | int mask; 12 | 13 | FileMode(int mask) { 14 | this.mask = mask; 15 | } 16 | 17 | public int getDefaultMask() { 18 | return mask; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/FileOpsAction.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | /** 4 | * Created by pgp on 16/03/17 5 | */ 6 | 7 | public enum FileOpsAction { 8 | CONFLICT, 9 | PAUSE, 10 | RESUME, 11 | CANCEL 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/ForegroundServiceType.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | /** 4 | * Created by pgp on 13/11/17 5 | * To be used with ProgressIndicator 6 | */ 7 | 8 | public enum ForegroundServiceType { 9 | FILE_TRANSFER, 10 | FILE_ARCHIVING, 11 | XRE_TRANSFER, 12 | XRE_HASH, // currently without overlay usage, only resource locking for long term tls connection, enable overlay when progress indication will be implemented in rh's hashFile 13 | SFTP_TRANSFER, 14 | SMB_TRANSFER, 15 | URL_DOWNLOAD, 16 | FIND, 17 | CREATE_FILE 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/OutputArchiveType.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | import it.pgp.xfiles.R; 4 | 5 | /** 6 | * Created by pgp on 30/05/17 7 | * Supported 7z output formats 8 | */ 9 | 10 | public enum OutputArchiveType { 11 | // no need to use explicit numberings, ordinal() is enough 12 | _7Z("7z", R.id._7zRadioButton), 13 | ZIP("zip", R.id.zipRadioButton), 14 | TAR("tar", R.id.tarRadioButton), // with offset 15 | GZ("gz", R.id.gzRadioButton), 16 | BZ2("bz2", R.id.bz2RadioButton), 17 | XZ("xz", R.id.xzRadioButton) 18 | ; 19 | 20 | final String s; 21 | final int id; 22 | 23 | OutputArchiveType(String s, int id) { 24 | this.s = s; 25 | this.id = id; 26 | } 27 | 28 | public String getValue() { 29 | return s; 30 | } 31 | 32 | public int getId() { 33 | return id; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/ProviderType.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | public enum ProviderType { 4 | LOCAL, 5 | LOCAL_WITHIN_ARCHIVE, 6 | SFTP, 7 | XFILES_REMOTE, 8 | SMB, 9 | URL_DOWNLOAD 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/ServiceStatus.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | /** 4 | * Created by pgp on 29/03/17 5 | */ 6 | 7 | public enum ServiceStatus { 8 | ACTIVE, 9 | PAUSED, 10 | CANCELLED, 11 | COMPLETED 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/SshKeyType.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | public enum SshKeyType { 4 | RSA, 5 | ED25519 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/WIFI_AP_STATE.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums; 2 | 3 | public enum WIFI_AP_STATE { 4 | WIFI_AP_STATE_DISABLING, 5 | WIFI_AP_STATE_DISABLED, 6 | WIFI_AP_STATE_ENABLING, 7 | WIFI_AP_STATE_ENABLED, 8 | WIFI_AP_STATE_FAILED 9 | } -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/conflicthandling/ConflictType.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums.conflicthandling; 2 | 3 | import it.pgp.xfiles.R; 4 | 5 | public enum ConflictType { 6 | FILE((byte)0x00, R.drawable.xfiles_file_icon), 7 | DIR((byte)0x01, R.drawable.xf_dir_blu); 8 | 9 | byte b; 10 | int imageRes; 11 | 12 | ConflictType(byte b, int imageRes) { 13 | this.b = b; 14 | this.imageRes = imageRes; 15 | } 16 | 17 | public byte getValue() { 18 | return b; 19 | } 20 | 21 | public int getImageRes() { 22 | return imageRes; 23 | } 24 | 25 | public static ConflictType fromNumeric(byte b) { 26 | switch (b) { 27 | case ((byte)0x00): 28 | return FILE; 29 | case ((byte)0x01): 30 | return DIR; 31 | default: 32 | return null; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/enums/conflicthandling/ErrorDecision.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.enums.conflicthandling; 2 | 3 | public enum ErrorDecision { 4 | ED_CONTINUE((byte)0x00), 5 | ED_CANCEL((byte)0xFF); 6 | 7 | byte i; 8 | 9 | ErrorDecision(byte i) { 10 | this.i = i; 11 | } 12 | 13 | public byte getValue() { 14 | return i; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/exceptions/DirCommanderException.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.exceptions; 2 | 3 | /** 4 | * Created by pgp on 19/01/18 5 | * For now, indicating only that current dir cannot be accessed by dir commander 6 | * Could be generalized (with an exception type enum) including other access errors of dir commander 7 | */ 8 | 9 | public class DirCommanderException extends Exception { 10 | public DirCommanderException() { 11 | super("Dir not accessible by commander"); 12 | } 13 | 14 | public DirCommanderException(String message) { 15 | super(message); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/exceptions/InterruptedTransferAsIOException.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.exceptions; 2 | 3 | import java.io.IOException; 4 | 5 | /** 6 | * Created by pgp on 16/11/17 7 | * Just to check whether to show copy error in case of IOException 8 | * (SSHJ IOException by stream copier listener trick, will cancel transfer 9 | * web source: https://github.com/hierynomus/sshj/issues/288 ) 10 | */ 11 | 12 | public class InterruptedTransferAsIOException extends IOException { 13 | public InterruptedTransferAsIOException() { 14 | super("Sftp transfer cancelled by user"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/fileservers/FileServer.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.fileservers; 2 | 3 | import it.pgp.xfiles.R; 4 | 5 | public enum FileServer { 6 | FTP(new SimpleFTPServer(),R.id.itemShareOverFTP,R.id.ftpServerButton), 7 | HTTP(new SimpleHTTPServer(),R.id.itemShareOverHTTP,R.id.httpServerButton); 8 | 9 | public final SimpleFileServer server; 10 | public final int menuId; 11 | public final int buttonId; 12 | 13 | FileServer(SimpleFileServer server, int menuId, int buttonId) { 14 | this.server = server; 15 | this.menuId = menuId; 16 | this.buttonId = buttonId; 17 | } 18 | 19 | public static FileServer fromMenuRes(int res) { 20 | switch(res) { 21 | case R.id.itemShareOverFTP: 22 | return FTP; 23 | case R.id.itemShareOverHTTP: 24 | return HTTP; 25 | default: 26 | throw new RuntimeException("Invalid resource id provided"); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/fileservers/SimpleFileServer.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.fileservers; 2 | 3 | import android.widget.Button; 4 | 5 | import java.util.Observable; 6 | 7 | import it.pgp.xfiles.utils.Misc; 8 | 9 | public abstract class SimpleFileServer extends Observable { 10 | 11 | public Button serverButton; 12 | public int serverButtonRes; 13 | 14 | public String rootPath = Misc.internalStorageDir.getAbsolutePath(); 15 | public int port; 16 | 17 | public abstract void startServer(); 18 | public abstract void stopServer(); 19 | 20 | public abstract boolean isAlive(); 21 | 22 | public void setRootPath(String rootPath) { 23 | this.rootPath = rootPath; 24 | } 25 | 26 | public int getPort() { 27 | return port; 28 | } 29 | 30 | public void setPort(int port) { 31 | this.port = port; 32 | } 33 | 34 | public void toggle() { 35 | if (isAlive()) stopServer(); else startServer(); 36 | } 37 | 38 | @Override 39 | public synchronized boolean hasChanged() { 40 | return true; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/io/FlushingBufferedOutputStream.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.io; 2 | 3 | import java.io.BufferedOutputStream; 4 | import java.io.IOException; 5 | import java.io.OutputStream; 6 | 7 | /** 8 | * Represents a continuous (not necessarily atomic) socket write, made of a group of smaller writes; 9 | * the actual write to the enclosed outputstream happens on full buffer and on close(), 10 | * in so allowing to use try with resources 11 | * It is actually a BufferedOutputStream with close() disabled (calls only flush() instead) 12 | */ 13 | 14 | public class FlushingBufferedOutputStream extends BufferedOutputStream { 15 | 16 | public FlushingBufferedOutputStream(OutputStream out) { 17 | super(out); 18 | } 19 | 20 | public FlushingBufferedOutputStream(OutputStream out, int size) { 21 | super(out, size); 22 | } 23 | 24 | @Override 25 | public void close() throws IOException { 26 | flush(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/items/BulkRenameItem.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.items; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | public class BulkRenameItem { 6 | public final String filename; 7 | public boolean duplicate; 8 | 9 | public BulkRenameItem(String filename) { 10 | this.filename = filename; 11 | this.duplicate = false; 12 | } 13 | 14 | @NonNull 15 | @Override 16 | public String toString() { 17 | return filename; 18 | } 19 | 20 | // equals implementation is needed, for hashCode to work as well 21 | @Override 22 | public boolean equals(Object obj) { 23 | if(obj instanceof BulkRenameItem) 24 | return filename.equals(((BulkRenameItem) obj).filename); 25 | return super.equals(obj); 26 | } 27 | 28 | @Override 29 | public int hashCode() { 30 | return filename.hashCode(); 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/items/FolderStatsItem.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.items; 2 | 3 | /** 4 | * Created by pgp on 14/07/17 5 | * Just a placeholder, since there is no byte array conversion from folderStats_resp (only numeric members) 6 | */ 7 | 8 | public final class FolderStatsItem { 9 | private FolderStatsItem() {} 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/items/MultiStatsItem.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.items; 2 | 3 | /** 4 | * Created by pgp on 14/07/17 5 | */ 6 | 7 | public class MultiStatsItem { 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/RelativeExtractEntries.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by pgp on 17/02/18 7 | */ 8 | 9 | public class RelativeExtractEntries { 10 | public int stripPathLen; 11 | public List entries; 12 | 13 | public RelativeExtractEntries(int stripPathLen, List entries) { 14 | this.stripPathLen = stripPathLen; 15 | this.entries = entries; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/ResponseCodes.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public enum ResponseCodes { 7 | 8 | // responses (full byte) 9 | RESPONSE_OK((byte)0x00), 10 | RESPONSE_ERROR((byte)0xFF), 11 | RESPONSE_REDIRECT((byte)0x11); // actually, end of redirects 12 | 13 | final byte value; 14 | static final Map codeMap = new HashMap(){{ 15 | for (ResponseCodes x: ResponseCodes.values()) 16 | put(x.getValue(),x); 17 | }}; 18 | 19 | ResponseCodes(byte value) { 20 | this.value = value; 21 | } 22 | 23 | // enum value to byte value 24 | public byte getValue() { 25 | return value; 26 | } 27 | 28 | // byte value to enum value 29 | public static ResponseCodes getCode(byte value) { 30 | return codeMap.get(value); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/StreamCiphers.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient; 2 | 3 | public enum StreamCiphers { 4 | CHACHA, 5 | AES128CTR, 6 | AES256CTR, 7 | SHACAL2CTR; 8 | 9 | public String toString() { 10 | switch(this) { 11 | case CHACHA: 12 | return "ChaCha"; 13 | case AES128CTR: 14 | return "AES-128/CTR"; 15 | case AES256CTR: 16 | return "AES-256/CTR"; 17 | case SHACAL2CTR: 18 | return "SHACAL2/CTR"; 19 | default: 20 | return null; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/BaseRHRequest.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import java.io.IOException; 4 | import java.io.OutputStream; 5 | import java.nio.charset.Charset; 6 | import java.nio.charset.StandardCharsets; 7 | 8 | import it.pgp.xfiles.roothelperclient.ControlCodes; 9 | 10 | public abstract class BaseRHRequest { 11 | 12 | static final Charset UTF8 = StandardCharsets.UTF_8; 13 | 14 | public final ControlCodes requestType; 15 | 16 | public BaseRHRequest(ControlCodes requestType) { 17 | this.requestType = requestType; 18 | } 19 | 20 | public byte getRequestByteWithFlags() { 21 | return requestType.getValue(); 22 | } 23 | 24 | public abstract void write(OutputStream outputStream) throws IOException; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/copylist_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import java.util.List; 4 | 5 | import it.pgp.xfiles.roothelperclient.ControlCodes; 6 | 7 | /** 8 | * Created by pgp on 19/07/17 9 | */ 10 | 11 | public class copylist_rq extends ListOfPathPairs_rq { 12 | public copylist_rq(List v_fx, List v_fy) { 13 | super(ControlCodes.ACTION_COPY, v_fx, v_fy); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/del_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import it.pgp.xfiles.roothelperclient.ControlCodes; 4 | 5 | /** 6 | * Created by pgp on 25/01/17 7 | */ 8 | 9 | public class del_rq extends SinglePath_rq { 10 | public del_rq(Object pathname) { 11 | super(ControlCodes.ACTION_DELETE, pathname); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/ls_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import it.pgp.xfiles.roothelperclient.ControlCodes; 4 | 5 | public class ls_rq extends SinglePath_rq { 6 | 7 | public ls_rq(Object dirPath) { 8 | super(ControlCodes.ACTION_LS, dirPath); 9 | } 10 | } -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/movelist_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import java.util.List; 4 | 5 | import it.pgp.xfiles.roothelperclient.ControlCodes; 6 | 7 | /** 8 | * Created by pgp on 19/07/17 9 | */ 10 | 11 | public class movelist_rq extends ListOfPathPairs_rq { 12 | 13 | public movelist_rq(List v_fx, List v_fy) { 14 | super(ControlCodes.ACTION_MOVE, v_fx, v_fy); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/openssh_ed25519_keygen_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | public class openssh_ed25519_keygen_rq extends openssl_rsa_pem_keygen_rq { 4 | public openssh_ed25519_keygen_rq() { 5 | super(-1); // keysize argument unused 6 | } 7 | 8 | @Override 9 | public byte getRequestByteWithFlags() { 10 | byte rq = requestType.getValue(); 11 | rq ^= (1 << 5); // flags: 001 12 | return rq; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/openssl_rsa_pem_keygen_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import java.io.IOException; 4 | import java.io.OutputStream; 5 | 6 | import it.pgp.xfiles.io.FlushingBufferedOutputStream; 7 | import it.pgp.xfiles.roothelperclient.ControlCodes; 8 | import it.pgp.xfiles.utils.Misc; 9 | 10 | /** 11 | * Created by pgp on 09/12/17 12 | * Only RSA key pair generation, for adding other formats (once SSHJ will support them) 13 | * add flag bits to requestType 14 | */ 15 | 16 | public class openssl_rsa_pem_keygen_rq extends BaseRHRequest { 17 | public final int keySize; 18 | 19 | public openssl_rsa_pem_keygen_rq(int keySize) { 20 | super(ControlCodes.ACTION_SSH_KEYGEN); // flags: 000 21 | this.keySize = keySize; 22 | } 23 | 24 | public void write(OutputStream outputStream) throws IOException { 25 | try(FlushingBufferedOutputStream nbf = new FlushingBufferedOutputStream(outputStream)) { 26 | nbf.write(getRequestByteWithFlags()); 27 | if(keySize > 0) nbf.write(Misc.castUnsignedNumberToBytes(keySize,4)); 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/retrieveHomePath_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import it.pgp.xfiles.roothelperclient.ControlCodes; 4 | 5 | public class retrieveHomePath_rq extends ls_rq { 6 | 7 | public final byte flags = 0x02; // 0x02 = {0,1,0} (bitmask) 8 | 9 | public retrieveHomePath_rq(Object dirPath) { 10 | super(dirPath); 11 | } 12 | 13 | @Override 14 | public byte getRequestByteWithFlags() { 15 | byte rq = requestType.getValue(); 16 | rq ^= (flags << ControlCodes.rq_bit_length); 17 | return rq; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/setAttributes_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import it.pgp.xfiles.roothelperclient.ControlCodes; 4 | 5 | /** 6 | * Created by pgp on 22/11/17 7 | */ 8 | 9 | public abstract class setAttributes_rq extends SinglePath_rq { 10 | 11 | public static final int bitOffsetForSubrequest = 6; 12 | 13 | public enum SubRequest { 14 | SET_DATES, 15 | SET_OWNERSHIP, 16 | SET_PERMISSIONS 17 | } 18 | 19 | public int additionalByte = 0; 20 | 21 | public setAttributes_rq(Object pathname) { 22 | super(ControlCodes.ACTION_SETATTRIBUTES, pathname); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/reqs/test_rq.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.reqs; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | import it.pgp.xfiles.roothelperclient.RelativeExtractEntries; 6 | 7 | public class test_rq extends extract_rq { 8 | public test_rq(Object fx, @Nullable Object password, @Nullable RelativeExtractEntries entries) { 9 | super(fx, "", password, null, entries, false); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/resps/exists_resp.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.resps; 2 | 3 | import java.io.DataInputStream; 4 | import java.io.IOException; 5 | import java.util.BitSet; 6 | 7 | /** 8 | * Created by pgp on 31/01/17 9 | */ 10 | 11 | public class exists_resp { 12 | public byte response; 13 | public BitSet respFlags; 14 | public exists_resp(DataInputStream inputStream) throws IOException { 15 | response = inputStream.readByte(); 16 | if (response == 0) { // unconditionally 0x00 (OK) for this kind of requests 17 | respFlags = BitSet.valueOf(new byte[]{inputStream.readByte()}); 18 | } 19 | else throw new RuntimeException("Wrong response byte on exist query, should never happen"); 20 | } 21 | public boolean getExists() { 22 | return respFlags.get(0); 23 | } 24 | 25 | public boolean getIsFile() { 26 | return respFlags.get(1); 27 | } 28 | 29 | public boolean getIsDir() { 30 | return respFlags.get(2); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/roothelperclient/resps/ssh_keygen_resp.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.roothelperclient.resps; 2 | 3 | import java.io.DataInputStream; 4 | import java.io.IOException; 5 | 6 | import it.pgp.xfiles.utils.Misc; 7 | 8 | /** 9 | * Created by pgp on 09/12/17 10 | */ 11 | 12 | public class ssh_keygen_resp { 13 | public String privateKey; // private 14 | public String publicKey; // public 15 | 16 | public ssh_keygen_resp(DataInputStream inputStream) throws IOException { 17 | // private key 18 | byte[] b = new byte[4]; 19 | inputStream.readFully(b); 20 | int len = (int) Misc.castBytesToUnsignedNumber(b,4); 21 | b = new byte[len]; 22 | inputStream.readFully(b); 23 | privateKey = new String(b); 24 | 25 | // public key 26 | b = new byte[4]; 27 | inputStream.readFully(b); 28 | len = (int) Misc.castBytesToUnsignedNumber(b,4); 29 | b = new byte[len]; 30 | inputStream.readFully(b); 31 | publicKey = new String(b); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/CompressService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | /** 7 | * Created by pgp on 05/06/17 8 | */ 9 | 10 | public class CompressService extends BaseBackgroundService { 11 | private static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0x123AB; 12 | 13 | @Override 14 | public int getServiceIconRes() { 15 | return R.drawable.xfiles_archive; 16 | } 17 | 18 | @Override 19 | public int getForegroundServiceNotificationId() { 20 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 21 | } 22 | 23 | @Override 24 | public final ForegroundServiceType getFgServiceType() { 25 | return ForegroundServiceType.FILE_ARCHIVING; 26 | } 27 | 28 | @Override 29 | protected void prepareLabels() { 30 | foreground_ticker="XFiles compress"; 31 | foreground_content_text="Compress in progress..."; 32 | foreground_pause_action_label="Pause compress"; 33 | foreground_stop_action_label="Stop compress"; 34 | } 35 | 36 | @Override 37 | protected BaseBackgroundTask getTask() { 38 | return new CompressTask(params); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/CopyMoveService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | /** 7 | * Created by pgp on 23/06/17 8 | */ 9 | 10 | public class CopyMoveService extends BaseBackgroundService { 11 | private static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0xC01; 12 | 13 | @Override 14 | public int getServiceIconRes() { 15 | return R.drawable.xf_copy; 16 | } 17 | 18 | @Override 19 | public int getForegroundServiceNotificationId() { 20 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 21 | } 22 | 23 | @Override 24 | public final ForegroundServiceType getFgServiceType() { 25 | return ForegroundServiceType.FILE_TRANSFER; 26 | } 27 | 28 | @Override 29 | protected void prepareLabels() { 30 | foreground_ticker="XFiles file transfer"; 31 | foreground_content_text="Transfer in progress..."; 32 | foreground_pause_action_label="Pause transfer"; 33 | foreground_stop_action_label="Stop transfer"; 34 | } 35 | 36 | @Override 37 | protected BaseBackgroundTask getTask() { 38 | return new CopyMoveTask(params); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/CreateFileService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | public class CreateFileService extends BaseBackgroundService { 7 | private static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0xB01; 8 | 9 | @Override 10 | public int getServiceIconRes() { 11 | return R.drawable.xfiles_file_icon; 12 | } 13 | 14 | @Override 15 | public int getForegroundServiceNotificationId() { 16 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 17 | } 18 | 19 | @Override 20 | public final ForegroundServiceType getFgServiceType() { 21 | return ForegroundServiceType.CREATE_FILE; 22 | } 23 | 24 | @Override 25 | protected void prepareLabels() { 26 | foreground_ticker="XFiles create file"; 27 | foreground_content_text="File creation in progress..."; 28 | foreground_pause_action_label="Pause create file"; 29 | foreground_stop_action_label="Stop create file"; 30 | } 31 | 32 | @Override 33 | protected BaseBackgroundTask getTask() { 34 | return new CreateFileTask(params); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/ExtractService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | /** 7 | * Created by pgp on 05/06/17 8 | */ 9 | 10 | public class ExtractService extends BaseBackgroundService { 11 | static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0x123AC; 12 | 13 | @Override 14 | public int getServiceIconRes() { 15 | return R.drawable.xfiles_extract; 16 | } 17 | 18 | @Override 19 | public int getForegroundServiceNotificationId() { 20 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 21 | } 22 | 23 | @Override 24 | public final ForegroundServiceType getFgServiceType() { 25 | return ForegroundServiceType.FILE_ARCHIVING; 26 | } 27 | 28 | @Override 29 | protected void prepareLabels() { 30 | foreground_ticker="XFiles extract"; 31 | foreground_content_text="Extract in progress..."; 32 | foreground_pause_action_label="Pause extract"; 33 | foreground_stop_action_label="Stop extract"; 34 | } 35 | 36 | @Override 37 | protected BaseBackgroundTask getTask() { 38 | return new ExtractTask(params); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/FindTask.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import java.io.Serializable; 4 | 5 | import it.pgp.xfiles.service.params.FindParams; 6 | 7 | /** 8 | * Created by pgp on 22/03/17 9 | */ 10 | 11 | public class FindTask extends RootHelperClientTask { 12 | 13 | public FindParams params; 14 | 15 | FindTask(Serializable params_) { 16 | super(params_); 17 | params = (FindParams)params_; 18 | // d = new DirTreeWalker(new File(targetFolder)); // not used anymore, dir tree walk performed by roothelper 19 | } 20 | 21 | // FIXME String progress collides with RootHelperClientTask definition 22 | // protected void onProgressUpdate(String... values) {} 23 | 24 | @Override 25 | protected Object doInBackground(Object[] params) { 26 | // with AsyncTask, on each String progress read by local socket, 27 | // update FindResultsActivity with a new adapter entry 28 | // use flag for interruption, roothelper thread at the other end exits on socket write error 29 | return null; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/HTTPDownloadService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | /** 7 | * Created by pgp on 05/11/17 8 | */ 9 | 10 | public class HTTPDownloadService extends BaseBackgroundService { 11 | 12 | private static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0xF01; 13 | 14 | @Override 15 | public int getServiceIconRes() { 16 | return R.drawable.xf_share; 17 | } 18 | 19 | @Override 20 | public int getForegroundServiceNotificationId() { 21 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 22 | } 23 | 24 | @Override 25 | public final ForegroundServiceType getFgServiceType() { 26 | return ForegroundServiceType.URL_DOWNLOAD; 27 | } 28 | 29 | @Override 30 | protected void prepareLabels() { 31 | foreground_ticker="XFiles HTTP download"; 32 | foreground_content_text="Download in progress..."; 33 | foreground_pause_action_label="Pause download"; 34 | foreground_stop_action_label="Stop download"; 35 | } 36 | 37 | @Override 38 | protected BaseBackgroundTask getTask() { 39 | return new HTTPDownloadTask(params); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/HTTPUploadService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | public class HTTPUploadService extends BaseBackgroundService { 7 | 8 | private static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0xF02; 9 | 10 | @Override 11 | public int getServiceIconRes() { 12 | return R.drawable.xf_share; 13 | } 14 | 15 | @Override 16 | public int getForegroundServiceNotificationId() { 17 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 18 | } 19 | 20 | @Override 21 | public final ForegroundServiceType getFgServiceType() { 22 | return ForegroundServiceType.URL_DOWNLOAD; 23 | } 24 | 25 | @Override 26 | protected void prepareLabels() { 27 | foreground_ticker="HTTPS upload"; 28 | foreground_content_text="Upload in progress..."; 29 | foreground_pause_action_label="Pause upload"; 30 | foreground_stop_action_label="Stop upload"; 31 | } 32 | 33 | @Override 34 | protected BaseBackgroundTask getTask() { 35 | return new HTTPUploadTask(params); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/NonInteractiveSmbService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | import it.pgp.xfiles.enums.ForegroundServiceType; 5 | 6 | public class NonInteractiveSmbService extends BaseBackgroundService { 7 | private static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0xA01; 8 | 9 | @Override 10 | public int getServiceIconRes() { 11 | return R.drawable.xf_copy; 12 | } 13 | 14 | @Override 15 | public int getForegroundServiceNotificationId() { 16 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 17 | } 18 | 19 | @Override 20 | public final ForegroundServiceType getFgServiceType() { 21 | return ForegroundServiceType.SMB_TRANSFER; 22 | } 23 | 24 | @Override 25 | protected void prepareLabels() { 26 | foreground_ticker="XFiles SMB transfer"; 27 | foreground_content_text="Transfer in progress..."; 28 | foreground_pause_action_label="Pause transfer"; 29 | foreground_stop_action_label="Stop transfer"; 30 | } 31 | 32 | @Override 33 | protected BaseBackgroundTask getTask() { 34 | return new NonInteractiveSmbTask(params); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/SocketNames.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | /** 4 | * Created by pgp on 27/09/17 5 | */ 6 | 7 | // e.g. thecompressor is parallel-compatible with thetransferrer in upload mode (no concurrent write load) 8 | public enum SocketNames { 9 | theroothelper, // Main, persistent, for short-lived operations 10 | // thecompressor, // READ & WRITE 11 | // theextractor, // READ & WRITE 12 | // thetransferrer, // READ & WRITE (READ ONLY IF UPLOAD, WRITE ONLY IF DOWNLOAD) 13 | // thefinder // READ ONLY 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/TestService.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service; 2 | 3 | import it.pgp.xfiles.R; 4 | 5 | public class TestService extends ExtractService { 6 | static final int FOREGROUND_SERVICE_NOTIFICATION_ID = 0x123AD; 7 | 8 | @Override 9 | public int getServiceIconRes() { 10 | return R.drawable.xfiles_test; 11 | } 12 | 13 | @Override 14 | public int getForegroundServiceNotificationId() { 15 | return FOREGROUND_SERVICE_NOTIFICATION_ID; 16 | } 17 | 18 | @Override 19 | protected void prepareLabels() { 20 | foreground_ticker="XFiles test"; 21 | foreground_content_text="Test in progress..."; 22 | foreground_pause_action_label="Pause test"; 23 | foreground_stop_action_label="Stop test"; 24 | } 25 | 26 | @Override 27 | protected BaseBackgroundTask getTask() { 28 | return new ExtractTask(params); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/params/CopyMoveParams.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service.params; 2 | 3 | import android.content.ContentResolver; 4 | import android.net.Uri; 5 | import android.support.annotation.NonNull; 6 | 7 | import java.io.Serializable; 8 | 9 | import it.pgp.xfiles.CopyListUris; 10 | import it.pgp.xfiles.CopyMoveListPathContent; 11 | import it.pgp.xfiles.utils.ContentProviderUtils; 12 | import it.pgp.xfiles.utils.pathcontent.BasePathContent; 13 | 14 | /** 15 | * Created by pgp on 23/06/17 16 | */ 17 | 18 | public class CopyMoveParams implements Serializable { 19 | public CopyMoveListPathContent list; 20 | public BasePathContent destPath; 21 | 22 | public CopyMoveParams(@NonNull CopyMoveListPathContent list, @NonNull BasePathContent destPath) { 23 | this.list = list; 24 | this.destPath = destPath; 25 | } 26 | 27 | public String getFirstFilename(ContentResolver resolver) { 28 | if (list instanceof CopyListUris) 29 | return ContentProviderUtils.getName(resolver, 30 | Uri.parse(((CopyListUris)list).contentUris.get(0))); 31 | else 32 | return list.files.get(0).getFilename(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/params/CreateFileParams.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service.params; 2 | 3 | import java.io.Serializable; 4 | 5 | import it.pgp.xfiles.items.FileCreationAdvancedOptions; 6 | import it.pgp.xfiles.utils.pathcontent.BasePathContent; 7 | 8 | public class CreateFileParams implements Serializable { 9 | public BasePathContent path; 10 | public FileCreationAdvancedOptions opts; 11 | 12 | public CreateFileParams(BasePathContent path, FileCreationAdvancedOptions opts) { 13 | this.path = path; 14 | this.opts = opts; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/params/DownloadParams.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service.params; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Created by pgp on 05/11/17 7 | */ 8 | 9 | public class DownloadParams implements Serializable { 10 | public String url; // in http download mode, it is the url to download from, in upload mode it is the domain to upload to 11 | public String destPath; // dir where to download remote file (LocalPathContent, unwrapped); in http upload mode, it is the source path to be uploaded 12 | public String filename; // desired filename, if null, will try to get remote filename 13 | public boolean httpsOnly; 14 | 15 | public DownloadParams(String url, String destPath, String filename, boolean httpsOnly) { 16 | this.url = url; 17 | this.destPath = destPath; 18 | this.filename = filename; 19 | this.httpsOnly = httpsOnly; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/params/FindParams.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service.params; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * Created by pgp on 11/12/17 9 | */ 10 | 11 | public class FindParams implements Serializable { 12 | 13 | public String targetFolder; 14 | public String expr; 15 | 16 | public FindParams(@Nullable String targetFolder, @Nullable String expr) { 17 | this.targetFolder = targetFolder; 18 | this.expr = expr; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/service/params/TestParams.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.service.params; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | import java.util.List; 6 | 7 | import it.pgp.xfiles.utils.pathcontent.BasePathContent; 8 | 9 | public class TestParams extends ExtractParams { 10 | public TestParams(List srcArchives, @Nullable String password, @Nullable List filenames) { 11 | super(srcArchives, null, password, filenames, false); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/sftpclient/InsertFailedException.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.sftpclient; 2 | 3 | /** 4 | * Created by pgp on 11/02/17 (cloned from KeyGuard) 5 | */ 6 | 7 | public class InsertFailedException extends Exception { 8 | 9 | public InsertFailedException() { 10 | super("Insert failed"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/sftpclient/XTransferListener.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.sftpclient; 2 | 3 | import net.schmizz.sshj.common.StreamCopier; 4 | import net.schmizz.sshj.xfer.TransferListener; 5 | 6 | public class XTransferListener implements TransferListener { 7 | 8 | public XProgress progressIndicator; 9 | 10 | // should be already initialized with total files 11 | public void setProgressIndicator(XProgress progressIndicator) { 12 | this.progressIndicator = progressIndicator; 13 | } 14 | 15 | @Override 16 | public TransferListener directory(String name) { 17 | // progressIndicator.incrementOuterProgressThenPublish(1); // increment dir progress at the beginning - avoid division by zero with dummy size of 1 18 | return this; 19 | } 20 | 21 | @Override 22 | public StreamCopier.Listener file(String name, long size) { 23 | progressIndicator.incrementOuterProgressThenPublish(size); 24 | return progressIndicator::publishInnerProgress; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/FavoritesList.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils; 2 | 3 | import java.util.Arrays; 4 | import java.util.Collection; 5 | import java.util.Set; 6 | import java.util.TreeSet; 7 | 8 | public class FavoritesList { 9 | public T a; 10 | public Set paths; // favorites as remote paths 11 | 12 | public FavoritesList(T a, String... paths) { 13 | this.a = a; 14 | this.paths = new TreeSet<>(Arrays.asList(paths)); 15 | } 16 | 17 | public FavoritesList(T a, Collection paths) { 18 | this.a = a; 19 | if(paths instanceof TreeSet) this.paths = (Set)paths; 20 | else this.paths = new TreeSet<>(paths); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/Pair.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.util.Objects; 6 | 7 | public class Pair implements Comparable> { 8 | @NonNull public I i; 9 | @NonNull public J j; 10 | 11 | public Pair(@NonNull I i, @NonNull J j) { 12 | this.i = i; 13 | this.j = j; 14 | } 15 | 16 | public void set(Pair p) { 17 | i = p.i; 18 | j = p.j; 19 | } 20 | 21 | public void set(I i, J j) { 22 | this.i = i; 23 | this.j = j; 24 | } 25 | 26 | @Override 27 | public boolean equals(Object o) { 28 | if (this == o) return true; 29 | if (o == null || getClass() != o.getClass()) return false; 30 | Pair pair = (Pair) o; 31 | return Objects.equals(i, pair.i) && 32 | Objects.equals(j, pair.j); 33 | } 34 | 35 | @Override 36 | public String toString() { 37 | return "("+i+","+j+")"; 38 | } 39 | 40 | @Override 41 | public int compareTo(Pair otherPair) { 42 | return this.toString().compareTo(otherPair.toString()); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/Predicate.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils; 2 | 3 | public interface Predicate { 4 | boolean test(T item); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/StreamsPair.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils; 2 | 3 | import java.io.DataInputStream; 4 | import java.io.OutputStream; 5 | 6 | import it.pgp.xfiles.roothelperclient.RootHelperClient; 7 | 8 | /** 9 | * Common supertype for {@link it.pgp.xfiles.roothelperclient.RemoteManager} 10 | * and {@link RootHelperClient.RootHelperStreams} 11 | */ 12 | public abstract class StreamsPair implements AutoCloseable { 13 | 14 | public DataInputStream i; 15 | public OutputStream o; 16 | 17 | @Override 18 | public void close() { 19 | try {i.close();} catch (Exception ignored) {} 20 | try {o.close();} catch (Exception ignored) {} 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/dircontent/ArchiveSubDirWithContent.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.dircontent; 2 | 3 | import java.util.List; 4 | 5 | import it.pgp.xfiles.BrowserItem; 6 | import it.pgp.xfiles.enums.FileOpsErrorCodes; 7 | import it.pgp.xfiles.enums.ProviderType; 8 | 9 | /** 10 | * Created by pgp on 13/05/17 11 | */ 12 | 13 | public class ArchiveSubDirWithContent extends GenericDirWithContent { 14 | 15 | public String archivePath; // archive absolute pathname in the local filesystem 16 | 17 | public ArchiveSubDirWithContent(String archivePath, String dir, List content) { 18 | super(dir, content); 19 | this.providerType = ProviderType.LOCAL_WITHIN_ARCHIVE; 20 | this.archivePath = archivePath; 21 | } 22 | 23 | public ArchiveSubDirWithContent(String archivePath, FileOpsErrorCodes errorCode) { 24 | super(errorCode); 25 | this.providerType = ProviderType.LOCAL_WITHIN_ARCHIVE; 26 | this.archivePath = archivePath; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/dircontent/LocalDirWithContent.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.dircontent; 2 | 3 | import java.util.List; 4 | 5 | import it.pgp.xfiles.BrowserItem; 6 | import it.pgp.xfiles.enums.FileOpsErrorCodes; 7 | import it.pgp.xfiles.enums.ProviderType; 8 | 9 | /** 10 | * Created by pgp on 13/05/17. 11 | * 12 | * LocalDirWithContent has no special attributes with respect to {@link GenericDirWithContent} 13 | */ 14 | 15 | public class LocalDirWithContent extends GenericDirWithContent { 16 | 17 | public LocalDirWithContent(String dir, List content) { 18 | super(dir, content); 19 | this.providerType = ProviderType.LOCAL; 20 | } 21 | 22 | public LocalDirWithContent(FileOpsErrorCodes errorCode) { 23 | super(errorCode); 24 | this.providerType = ProviderType.LOCAL; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/dircontent/SftpDirWithContent.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.dircontent; 2 | 3 | import java.util.List; 4 | 5 | import it.pgp.xfiles.BrowserItem; 6 | import it.pgp.xfiles.enums.FileOpsErrorCodes; 7 | import it.pgp.xfiles.enums.ProviderType; 8 | import it.pgp.xfiles.sftpclient.AuthData; 9 | 10 | /** 11 | * Created by pgp on 13/05/17. 12 | * 13 | * LocalDirWithContent has no special attributes with respect to {@link GenericDirWithContent} 14 | */ 15 | 16 | public class SftpDirWithContent extends GenericDirWithContent { 17 | 18 | public AuthData authData; // user@domain:port, to display in address bar 19 | public String pendingLsPath; 20 | 21 | public SftpDirWithContent(AuthData authData, String dir, List content) { 22 | super(dir, content); 23 | this.providerType = ProviderType.SFTP; 24 | this.authData = authData; 25 | } 26 | 27 | public SftpDirWithContent(AuthData authData, FileOpsErrorCodes errorCode, String pendingLsPath) { 28 | super(errorCode); 29 | this.providerType = ProviderType.SFTP; 30 | this.authData = authData; 31 | this.pendingLsPath = pendingLsPath; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/dircontent/SmbDirWithContent.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.dircontent; 2 | 3 | import java.util.List; 4 | 5 | import it.pgp.xfiles.BrowserItem; 6 | import it.pgp.xfiles.enums.FileOpsErrorCodes; 7 | import it.pgp.xfiles.enums.ProviderType; 8 | import it.pgp.xfiles.smbclient.SmbAuthData; 9 | 10 | public class SmbDirWithContent extends GenericDirWithContent { 11 | public SmbAuthData smbAuthData; // user@domain:host:port, to display in address bar 12 | 13 | public SmbDirWithContent(SmbAuthData smbAuthData, String dir, List content) { 14 | super(dir, content); 15 | this.providerType = ProviderType.SMB; 16 | this.smbAuthData = smbAuthData; 17 | } 18 | 19 | public SmbDirWithContent(SmbAuthData smbAuthData, FileOpsErrorCodes errorCode) { 20 | super(errorCode); 21 | this.providerType = ProviderType.SMB; 22 | this.smbAuthData = smbAuthData; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/iterators/VMapAbstractIterable.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.iterators; 2 | 3 | import it.pgp.xfiles.utils.VMap; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * Created by pgp on 12/04/17 9 | * 10 | * base class in order to allow for and foreach syntax on different it.pgp.utils.iterators for it.pgp.utils.VMap, 11 | * without explicitly instantiating iterator objects 12 | */ 13 | public abstract class VMapAbstractIterable implements Iterable> { 14 | 15 | VMap vMap; 16 | public VMapAbstractIterable(VMap vMap) { 17 | this.vMap = vMap; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/iterators/VMapFullTreeIterable.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.iterators; 2 | 3 | import java.util.Iterator; 4 | import java.util.Map; 5 | import java.util.Stack; 6 | 7 | import it.pgp.xfiles.utils.VMap; 8 | 9 | /** 10 | * Created by pgp on 12/04/17 11 | */ 12 | 13 | public class VMapFullTreeIterable extends VMapAbstractIterable { 14 | public VMapFullTreeIterable(VMap vMap) { 15 | super(vMap); 16 | } 17 | 18 | @Override 19 | public Iterator> iterator() { 20 | return new VMapFullTreeIterator(); 21 | } 22 | 23 | class VMapFullTreeIterator implements Iterator> { 24 | 25 | Stack S; 26 | 27 | VMapFullTreeIterator() { 28 | S = new Stack<>(); 29 | S.addAll(vMap.h.entrySet()); 30 | } 31 | 32 | @Override 33 | public boolean hasNext() { 34 | return !S.isEmpty(); 35 | } 36 | 37 | @Override 38 | public Map.Entry next() { 39 | Map.Entry t = S.pop(); 40 | if (t.getValue() instanceof Map) { 41 | S.addAll(((Map) t.getValue()).entrySet()); 42 | } 43 | return t; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/oreoap/MyOnStartTetheringCallback.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.oreoap; 2 | 3 | public class MyOnStartTetheringCallback { 4 | public void onTetheringStarted() {} 5 | 6 | public void onTetheringFailed() {} 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/it/pgp/xfiles/utils/pathcontent/LocalPathContent.java: -------------------------------------------------------------------------------- 1 | package it.pgp.xfiles.utils.pathcontent; 2 | 3 | import it.pgp.xfiles.enums.FileOpsErrorCodes; 4 | import it.pgp.xfiles.enums.ProviderType; 5 | 6 | /** 7 | * Created by pgp on 13/05/17 8 | */ 9 | 10 | public class LocalPathContent extends BasePathContent { 11 | 12 | private static final ProviderType provType = ProviderType.LOCAL; 13 | 14 | public LocalPathContent(String dir) { 15 | super(provType, dir); 16 | } 17 | 18 | public LocalPathContent(FileOpsErrorCodes errorCode) { 19 | super(provType, errorCode); 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return dir; 25 | } 26 | 27 | @Override 28 | public BasePathContent concat(String filename) { 29 | String sep = dir.equals("/")?"":"/"; 30 | return new LocalPathContent(dir+sep+filename); 31 | } 32 | 33 | @Override 34 | public BasePathContent getParent() { 35 | if (dir.equals("/")) return null; 36 | int idx = dir.lastIndexOf('/'); 37 | return new LocalPathContent(dir.substring(0,idx)); 38 | } 39 | 40 | @Override 41 | public BasePathContent getCopy() { 42 | return new LocalPathContent(dir); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_notification_ime_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/ic_notification_ime_default.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_dir_blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_dir_blu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_new_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_new_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_new_file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_recycle_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_recycle_bin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_up_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_up_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_view_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_view_mode.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_xre_server_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_xre_server_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xf_xre_server_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xf_xre_server_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_anytype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_anytype.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_7z.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_apk.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_bz2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_cab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_cab.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_gz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_tar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_xz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_xz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_archive_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_archive_zip.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_extract.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_favorites.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_file_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_file_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_find.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_hotspot_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_hotspot_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_hotspot_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_hotspot_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_hotspot_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_hotspot_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_link_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_link_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_new_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_new_app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_paste.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_root_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_root_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_root_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_root_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_sort_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_sort_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_sort_special.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_sort_special.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_switch_operation_buttons_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_switch_operation_buttons_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_switch_operation_buttons_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_switch_operation_buttons_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_system_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_system_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_system_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_system_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_system_recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_system_recent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_test.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_video.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_wifi_enabled_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_wifi_enabled_not_connected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_wifi_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_wifi_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_wifi_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_wifi_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/xfiles_wifi_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-hdpi/xfiles_wifi_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_dir_blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_dir_blu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_new_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_new_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_new_file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_recycle_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_recycle_bin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_up_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_up_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_view_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_view_mode.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_xre_server_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_xre_server_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xf_xre_server_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xf_xre_server_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_anytype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_anytype.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_7z.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_apk.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_bz2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_cab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_cab.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_gz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_tar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_xz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_xz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_archive_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_archive_zip.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_extract.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_favorites.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_file_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_file_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_find.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_hotspot_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_hotspot_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_hotspot_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_hotspot_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_hotspot_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_hotspot_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_link_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_link_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_new_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_new_app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_paste.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_root_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_root_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_root_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_root_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_switch_operation_buttons_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_switch_operation_buttons_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_switch_operation_buttons_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_switch_operation_buttons_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_system_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_system_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_system_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_system_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_system_recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_system_recent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_test.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_video.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_wifi_enabled_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_wifi_enabled_not_connected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_wifi_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_wifi_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_wifi_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_wifi_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/xfiles_wifi_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-ldpi/xfiles_wifi_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_media_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/ic_media_stop.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_dir_blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_dir_blu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_new_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_new_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_new_file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_recycle_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_recycle_bin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_up_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_up_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_view_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_view_mode.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_xre_server_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_xre_server_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xf_xre_server_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xf_xre_server_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_anytype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_anytype.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_7z.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_apk.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_bz2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_cab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_cab.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_gz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_tar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_xz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_xz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_archive_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_archive_zip.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_extract.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_favorites.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_file_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_file_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_find.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_hotspot_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_hotspot_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_hotspot_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_hotspot_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_hotspot_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_hotspot_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_link_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_link_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_new_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_new_app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_paste.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_root_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_root_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_root_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_root_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_sort_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_sort_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_sort_special.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_sort_special.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_switch_operation_buttons_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_switch_operation_buttons_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_switch_operation_buttons_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_switch_operation_buttons_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_system_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_system_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_system_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_system_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_system_recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_system_recent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_test.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_video.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_wifi_enabled_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_wifi_enabled_not_connected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_wifi_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_wifi_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_wifi_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_wifi_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/xfiles_wifi_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-mdpi/xfiles_wifi_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_dir_blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_dir_blu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_new_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_new_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_new_file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_recycle_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_recycle_bin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_up_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_up_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_view_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_view_mode.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_xre_server_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_xre_server_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xf_xre_server_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xf_xre_server_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_anytype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_anytype.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_7z.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_apk.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_bz2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_cab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_cab.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_gz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_tar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_xz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_xz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_archive_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_archive_zip.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_extract.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_favorites.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_file_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_file_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_find.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_hotspot_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_hotspot_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_hotspot_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_hotspot_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_hotspot_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_hotspot_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_link_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_link_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_new_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_new_app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_paste.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_root_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_root_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_root_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_root_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_sort_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_sort_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_sort_special.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_sort_special.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_switch_operation_buttons_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_switch_operation_buttons_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_switch_operation_buttons_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_switch_operation_buttons_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_system_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_system_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_system_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_system_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_system_recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_system_recent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_test.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_video.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_wifi_enabled_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_wifi_enabled_not_connected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_wifi_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_wifi_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_wifi_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_wifi_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xfiles_wifi_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xhdpi/xfiles_wifi_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_dir_blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_dir_blu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_new_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_new_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_new_file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_recycle_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_recycle_bin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_up_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_up_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_view_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_view_mode.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_xre_server_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_xre_server_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xf_xre_server_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xf_xre_server_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_anytype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_anytype.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_7z.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_apk.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_bz2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_cab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_cab.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_gz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_tar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_xz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_xz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_archive_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_archive_zip.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_extract.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_favorites.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_file_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_file_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_hotspot_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_hotspot_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_hotspot_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_hotspot_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_hotspot_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_hotspot_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_link_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_link_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_new_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_new_app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_root_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_root_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_root_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_root_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_sort_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_sort_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_sort_special.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_sort_special.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_switch_operation_buttons_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_switch_operation_buttons_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_switch_operation_buttons_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_switch_operation_buttons_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_system_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_system_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_system_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_system_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_system_recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_system_recent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_test.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_video.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_wifi_enabled_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_wifi_enabled_not_connected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_wifi_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_wifi_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_wifi_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_wifi_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/xfiles_wifi_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxhdpi/xfiles_wifi_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_arrow_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_arrow_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_dir_blu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_dir_blu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_new_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_new_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_new_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_new_file.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_recycle_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_recycle_bin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_up_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_up_dir.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_view_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_view_mode.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_xre_server_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_xre_server_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xf_xre_server_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xf_xre_server_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_anytype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_anytype.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_7z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_7z.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_apk.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_bz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_bz2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_cab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_cab.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_gz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_gz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_rar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_tar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_xz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_xz.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_archive_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_archive_zip.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_extract.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_favorites.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_file_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_file_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_hotspot_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_hotspot_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_hotspot_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_hotspot_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_hotspot_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_hotspot_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_link_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_link_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_new_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_new_app_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_root_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_root_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_root_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_root_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_switch_operation_buttons_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_switch_operation_buttons_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_switch_operation_buttons_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_switch_operation_buttons_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_system_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_system_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_system_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_system_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_system_recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_system_recent.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_test.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_video.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_wifi_enabled_not_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_wifi_enabled_not_connected.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_wifi_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_wifi_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_wifi_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_wifi_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/xfiles_wifi_unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable-xxxhdpi/xfiles_wifi_unavailable.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/about_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/hashview_window_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 12 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_remove.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/media_gallery_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/root_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/xf_widget_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pgp/XFiles/faa4a3f9e824cc6d71fc62da9878cd85aef0b69a/app/src/main/res/drawable/xf_widget_thumbnail.png -------------------------------------------------------------------------------- /app/src/main/res/layout/ask_password_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 22 | 23 |