├── .gitignore
├── COPYING
├── ChangeLog
├── INSTALL
├── README
├── configure.bat
├── installer
├── build.bat
├── images
│ ├── header.bmp
│ └── wizard.bmp
├── include
│ └── multiuser64.nsh
├── languages
│ └── saladin_en.nsh
├── qt.conf
└── saladin.nsi
├── saladin.pro
├── src
├── aboutbox.cpp
├── aboutbox.h
├── application.cpp
├── application.h
├── bookmark.cpp
├── bookmark.h
├── bookmark_p.h
├── bookmarksdialog.cpp
├── bookmarksdialog.h
├── drivestripmanager.cpp
├── drivestripmanager.h
├── findbar.cpp
├── findbar.h
├── folderitemdelegate.cpp
├── folderitemdelegate.h
├── folderitemmodel.cpp
├── folderitemmodel.h
├── folderitemview.cpp
├── folderitemview.h
├── guide
│ ├── en
│ │ ├── functions.html
│ │ ├── index.html
│ │ ├── lists.html
│ │ ├── masks.html
│ │ ├── regexps.html
│ │ ├── shortcuts.html
│ │ ├── tools.html
│ │ ├── viewer.html
│ │ └── wildcards.html
│ ├── es
│ │ ├── functions.html
│ │ ├── index.html
│ │ ├── lists.html
│ │ ├── masks.html
│ │ ├── regexps.html
│ │ ├── shortcuts.html
│ │ ├── tools.html
│ │ ├── viewer.html
│ │ └── wildcards.html
│ ├── guide.qrc
│ └── style.css
├── guidedialog.cpp
├── guidedialog.h
├── icons
│ ├── about-16.png
│ ├── arrow-down-16.png
│ ├── arrow-hide-16.png
│ ├── arrow-left-16.png
│ ├── arrow-right-16.png
│ ├── arrow-top-16.png
│ ├── arrow-up-16.png
│ ├── black-background-16.png
│ ├── bookmark-16.png
│ ├── bookmark-22.png
│ ├── browse-16.png
│ ├── browse-22.png
│ ├── calculate-16.png
│ ├── calculate-22.png
│ ├── clone-16.png
│ ├── clone-22.png
│ ├── close-16.png
│ ├── compare-16.png
│ ├── compare-22.png
│ ├── configure-16.png
│ ├── configure-22.png
│ ├── copy-16.png
│ ├── copy-22.png
│ ├── copy-names-16.png
│ ├── dark
│ │ ├── about-16.png
│ │ ├── arrow-down-16.png
│ │ ├── arrow-hide-16.png
│ │ ├── arrow-left-16.png
│ │ ├── arrow-right-16.png
│ │ ├── arrow-top-16.png
│ │ ├── arrow-up-16.png
│ │ ├── black-background-16.png
│ │ ├── bookmark-16.png
│ │ ├── bookmark-22.png
│ │ ├── browse-16.png
│ │ ├── browse-22.png
│ │ ├── calculate-16.png
│ │ ├── calculate-22.png
│ │ ├── clone-16.png
│ │ ├── clone-22.png
│ │ ├── close-16.png
│ │ ├── compare-16.png
│ │ ├── compare-22.png
│ │ ├── configure-16.png
│ │ ├── configure-22.png
│ │ ├── copy-16.png
│ │ ├── copy-22.png
│ │ ├── copy-names-16.png
│ │ ├── dark.qrc
│ │ ├── delete-16.png
│ │ ├── delete-22.png
│ │ ├── edit-16.png
│ │ ├── edit-22.png
│ │ ├── edit-copy-16.png
│ │ ├── edit-copy-22.png
│ │ ├── edit-cut-16.png
│ │ ├── edit-cut-22.png
│ │ ├── edit-paste-16.png
│ │ ├── edit-paste-22.png
│ │ ├── encoding-16.png
│ │ ├── explore-16.png
│ │ ├── explore-22.png
│ │ ├── file-new-16.png
│ │ ├── file-new-22.png
│ │ ├── find-16.png
│ │ ├── find-22.png
│ │ ├── find-next-16.png
│ │ ├── find-previous-16.png
│ │ ├── find-text-16.png
│ │ ├── folder-compare-16.png
│ │ ├── folder-new-16.png
│ │ ├── folder-new-22.png
│ │ ├── ftp-16.png
│ │ ├── ftp-22.png
│ │ ├── fullscreen-16.png
│ │ ├── fullscreen-22.png
│ │ ├── gear-16.png
│ │ ├── goto-16.png
│ │ ├── goto-22.png
│ │ ├── help-16.png
│ │ ├── help-22.png
│ │ ├── hex-mode-16.png
│ │ ├── history-16.png
│ │ ├── home-16.png
│ │ ├── info-16.png
│ │ ├── info-22.png
│ │ ├── license-16.png
│ │ ├── line-numbers-16.png
│ │ ├── move-16.png
│ │ ├── move-22.png
│ │ ├── multi-rename-16.png
│ │ ├── multi-rename-22.png
│ │ ├── open-16.png
│ │ ├── pack-16.png
│ │ ├── pack-22.png
│ │ ├── pane-same-16.png
│ │ ├── pane-swap-16.png
│ │ ├── refresh-16.png
│ │ ├── refresh-22.png
│ │ ├── rename-16.png
│ │ ├── rename-22.png
│ │ ├── rotate-left-16.png
│ │ ├── rotate-right-16.png
│ │ ├── saladin-16.png
│ │ ├── saladin-22.png
│ │ ├── saladin-32.png
│ │ ├── saladin-48.png
│ │ ├── select-16.png
│ │ ├── select-22.png
│ │ ├── select-all-16.png
│ │ ├── select-invert-16.png
│ │ ├── terminal-16.png
│ │ ├── terminal-22.png
│ │ ├── trashcan-16.png
│ │ ├── trashcan-22.png
│ │ ├── type-binary-16.png
│ │ ├── type-image-16.png
│ │ ├── type-text-16.png
│ │ ├── unselect-16.png
│ │ ├── unselect-22.png
│ │ ├── unselect-all-16.png
│ │ ├── view-16.png
│ │ ├── view-22.png
│ │ ├── view-hidden-16.png
│ │ ├── view-hidden-22.png
│ │ ├── view-selected-16.png
│ │ ├── warning-16.png
│ │ ├── web-16.png
│ │ ├── word-wrap-16.png
│ │ ├── zoom-fit-16.png
│ │ ├── zoom-in-16.png
│ │ ├── zoom-orig-16.png
│ │ └── zoom-out-16.png
│ ├── delete-16.png
│ ├── delete-22.png
│ ├── edit-16.png
│ ├── edit-22.png
│ ├── edit-copy-16.png
│ ├── edit-copy-22.png
│ ├── edit-cut-16.png
│ ├── edit-cut-22.png
│ ├── edit-paste-16.png
│ ├── edit-paste-22.png
│ ├── encoding-16.png
│ ├── explore-16.png
│ ├── explore-22.png
│ ├── file-new-16.png
│ ├── file-new-22.png
│ ├── find-16.png
│ ├── find-22.png
│ ├── find-next-16.png
│ ├── find-previous-16.png
│ ├── find-text-16.png
│ ├── folder-compare-16.png
│ ├── folder-new-16.png
│ ├── folder-new-22.png
│ ├── ftp-16.png
│ ├── ftp-22.png
│ ├── fullscreen-16.png
│ ├── fullscreen-22.png
│ ├── gear-16.png
│ ├── goto-16.png
│ ├── goto-22.png
│ ├── help-16.png
│ ├── help-22.png
│ ├── hex-mode-16.png
│ ├── history-16.png
│ ├── home-16.png
│ ├── icons.qrc
│ ├── info-16.png
│ ├── license-16.png
│ ├── line-numbers-16.png
│ ├── move-16.png
│ ├── move-22.png
│ ├── multi-rename-16.png
│ ├── multi-rename-22.png
│ ├── open-16.png
│ ├── pack-16.png
│ ├── pack-22.png
│ ├── pane-same-16.png
│ ├── pane-swap-16.png
│ ├── refresh-16.png
│ ├── refresh-22.png
│ ├── rename-16.png
│ ├── rename-22.png
│ ├── rotate-left-16.png
│ ├── rotate-right-16.png
│ ├── saladin-16.png
│ ├── saladin-22.png
│ ├── saladin-32.png
│ ├── saladin-48.png
│ ├── select-16.png
│ ├── select-22.png
│ ├── select-all-16.png
│ ├── select-invert-16.png
│ ├── terminal-16.png
│ ├── terminal-22.png
│ ├── trashcan-16.png
│ ├── trashcan-22.png
│ ├── type-binary-16.png
│ ├── type-image-16.png
│ ├── type-text-16.png
│ ├── unselect-16.png
│ ├── unselect-22.png
│ ├── unselect-all-16.png
│ ├── view-16.png
│ ├── view-22.png
│ ├── view-hidden-16.png
│ ├── view-hidden-22.png
│ ├── view-selected-16.png
│ ├── warning-16.png
│ ├── web-16.png
│ ├── word-wrap-16.png
│ ├── zoom-fit-16.png
│ ├── zoom-in-16.png
│ ├── zoom-orig-16.png
│ └── zoom-out-16.png
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── multirenamewidget.cpp
├── multirenamewidget.h
├── openftpdialog.cpp
├── openftpdialog.h
├── operationdialog.cpp
├── operationdialog.h
├── panewidget.cpp
├── panewidget.h
├── precompiled.h
├── resources
│ ├── binaryview.xml
│ ├── bookmarksdialog.xml
│ ├── guidedialog.xml
│ ├── imageview.xml
│ ├── mainwindow.xml
│ ├── resources.qrc
│ ├── searchdialog.xml
│ ├── textview.xml
│ └── viewerwindow.xml
├── saladin.ico
├── saladin.rc
├── searchdialog.cpp
├── searchdialog.h
├── searchhelper.cpp
├── searchhelper.h
├── searchitemmodel.cpp
├── searchitemmodel.h
├── settingsdialog.cpp
├── settingsdialog.h
├── shell
│ ├── changenotifywatcher.cpp
│ ├── changenotifywatcher_p.h
│ ├── iconcache.cpp
│ ├── iconcache_p.h
│ ├── shell.pri
│ ├── shellbase.cpp
│ ├── shellbase_p.h
│ ├── shellcomputer.cpp
│ ├── shellcomputer.h
│ ├── shellcomputer_p.h
│ ├── shelldrive.cpp
│ ├── shelldrive.h
│ ├── shelldrive_p.h
│ ├── shelldropdata.cpp
│ ├── shelldropdata.h
│ ├── shelldropdata_p.h
│ ├── shellfolder.cpp
│ ├── shellfolder.h
│ ├── shellfolder_p.h
│ ├── shellitem.cpp
│ ├── shellitem.h
│ ├── shellitem_p.h
│ ├── shellpidl.cpp
│ ├── shellpidl.h
│ ├── shellpidl_p.h
│ ├── shellselection.cpp
│ ├── shellselection.h
│ ├── shellselection_p.h
│ ├── streamdevice.cpp
│ ├── streamdevice.h
│ └── streamdevice_p.h
├── src.pro
├── utils
│ ├── dataserializer.cpp
│ ├── dataserializer.h
│ ├── elidedlabel.cpp
│ ├── elidedlabel.h
│ ├── formathelper.cpp
│ ├── formathelper.h
│ ├── iconloader.cpp
│ ├── iconloader.h
│ ├── localsettings.cpp
│ ├── localsettings.h
│ ├── separatorcombobox.cpp
│ ├── separatorcombobox.h
│ ├── updateclient.cpp
│ ├── updateclient.h
│ └── utils.pri
├── viewer
│ ├── binaryloader.cpp
│ ├── binaryloader.h
│ ├── binaryview.cpp
│ ├── binaryview.h
│ ├── gotodialog.cpp
│ ├── gotodialog.h
│ ├── imagelabel.cpp
│ ├── imagelabel.h
│ ├── imageloader.cpp
│ ├── imageloader.h
│ ├── imageview.cpp
│ ├── imageview.h
│ ├── textedit.cpp
│ ├── textedit.h
│ ├── textloader.cpp
│ ├── textloader.h
│ ├── textview.cpp
│ ├── textview.h
│ ├── view.cpp
│ ├── view.h
│ ├── viewer.pri
│ ├── viewerwindow.cpp
│ ├── viewerwindow.h
│ ├── viewmanager.cpp
│ └── viewmanager.h
└── xmlui
│ ├── README
│ ├── builder.cpp
│ ├── builder.h
│ ├── client.cpp
│ ├── client.h
│ ├── gradientwidget.cpp
│ ├── gradientwidget.h
│ ├── node_p.h
│ ├── toolstrip.cpp
│ ├── toolstrip.h
│ ├── toolstrip_p.h
│ ├── windowsstyle.cpp
│ ├── windowsstyle.h
│ └── xmlui.pri
└── translations
├── locale.ini
├── saladin_de.qm
├── saladin_de.ts
├── saladin_es.qm
├── saladin_es.ts
├── saladin_hu.qm
├── saladin_hu.ts
├── saladin_pl.qm
├── saladin_pl.ts
├── saladin_pt_BR.qm
├── saladin_pt_BR.ts
├── saladin_ru.qm
├── saladin_ru.ts
└── saladin_untranslated.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | debug
2 | release
3 | src/precompiled.h.cpp
4 | src/saladin.vcxproj
5 | src/saladin.vcxproj.filters
6 | src/saladin.vcxproj.user
7 | tmp
8 | translations/call-lrelease.bat
9 | translations/call-lupdate.bat
10 | .qmake.stash
11 | config.pri
12 | configure-msvc.bat
13 | release-x64.bat
14 | saladin.sln
15 | saladin.v12.suo
16 |
--------------------------------------------------------------------------------
/ChangeLog:
--------------------------------------------------------------------------------
1 | 1.0 (2017-05-02)
2 | * ported to Qt5
3 | * compact toolbar layout and new icons
4 | * collapsing the toolbar into a menu bar
5 | * white and dark user interface themes
6 | * viewing mutliple selected files in the internal viewer
7 | * remembering last used search text and patterns
8 | * quickly navigate to the configured home directories
9 | * open the text editor directly from the internal viewer
10 | * automatically rotate images in the internal viewer
11 | * display line numbers in the internal viewer
12 | * detailed image information in the internal viewer
13 | * fixed opening fileds locked for writing in the internal viewer
14 | * fixed a crash in the search results window when the list is empty
15 | * added German and Russian translations
16 |
17 | 0.6 (2014-11-25)
18 | * changing background for transparent areas in image viewer
19 | * fixed a problem with changing panel width
20 | * added Spanish translation
21 |
22 | 0.5 (2014-05-07)
23 | * full screen mode in the internal viewer
24 | * displaying files from zipped folders in the internal viewer
25 | * go to line command in the internal text viewer
26 | * added "overwrite" option in pack to zip command instead of silently overwriting
27 | * do not show media libraries and shared folders in the drives bar
28 | * fixed copying file names from search results
29 |
30 | 0.4 (2013-01-09)
31 | * display confirmation when dragging files
32 | * zoom and rotate images in the internal viewer
33 | * search files by name and content
34 | * select/unselect multiple patterns; remember last pattern
35 | * refresh drives bar using contextual menu
36 |
37 | 0.3 (2012-04-05)
38 | * asynchronous loading in the file viewer
39 | * configuring font for binary and text view
40 | * compatibility method for creating directories
41 | * added Portuguese translation
42 |
43 | 0.2 (2011-08-22)
44 | * first version of the internal file viewer
45 | * fixed a crash when "show hidden files" is enabled at startup
46 | * improved look and feel with the windows classic theme
47 | * use natural order for sorting file names
48 |
49 | 0.1 (2011-01-26)
50 | * initial version
51 |
--------------------------------------------------------------------------------
/INSTALL:
--------------------------------------------------------------------------------
1 | Requirements
2 | ============
3 |
4 | * Microsoft Visual Studio 2008 or newer
5 |
6 | * Qt framework, version 5.4 or newer (http://www.qt.io/)
7 |
8 | The program can be built using the standard 'qmake' tool from Qt. Simple configure
9 | script is available which creates a configuration file and runs qmake with
10 | appropriate parameters.
11 |
12 | Open the Visual Studio Command Prompt. Make sure that QTDIR is set to the path where
13 | Qt was installed. Go to the directory where you have unpacked Saladin and run:
14 |
15 | > set QTDIR=C:\path\to\qt5
16 | > configure.bat
17 | > nmake
18 |
19 | Additional options that can be passed to the configure script:
20 |
21 | -prefix DIR
22 |
23 | The location where the package will be installed (default is
24 | 'C:\Program Files\Saladin').
25 |
26 | -debug
27 |
28 | Build with debugging symbols.
29 |
30 | -msvc
31 |
32 | Generate a solution for Microsoft Visual Studio instead of Makefiles.
33 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | Saladin
2 | Version 1.0 (2017-05-02)
3 |
4 | Dual-pane file manager for Windows.
5 |
6 | Saladin is an open source dual-pane file manager which merges
7 | the capabilities of Windows Explorer with the well known
8 | and easy to use orthodox user interface. It supports both
9 | 32-bit and 64-bit versions of Windows.
10 |
11 | NOTE: This program does not support Windows XP or older.
12 |
13 |
14 | Copyrights
15 | ==========
16 |
17 | Copyright (C) 2011-2017 Michał Męciński
18 |
19 | Icons copyright (C) 2017 Łukasz Grabowski
20 |
21 |
22 | License
23 | =======
24 |
25 | This program is free software: you can redistribute it and/or modify
26 | it under the terms of the GNU General Public License as published by
27 | the Free Software Foundation, either version 3 of the License, or
28 | (at your option) any later version.
29 |
30 | This program is distributed in the hope that it will be useful,
31 | but WITHOUT ANY WARRANTY; without even the implied warranty of
32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 | GNU General Public License for more details.
34 |
35 | You should have received a copy of the GNU General Public License
36 | along with this program. If not, see .
37 |
38 |
39 | Credits
40 | =======
41 |
42 | Authors:
43 |
44 | * Michał Męciński (mimec at mimec org; Twitter: @MichalMecinski)
45 |
46 | Icons:
47 |
48 | * Łukasz Grabowski (lgrabowski at bulletcode com; Twitter: @LukaszGx)
49 |
50 | Translators:
51 |
52 | * Flávio Veras (flaviove at gmail com)
53 | - Portuguese (Brazil) translation
54 |
55 | * Patricia Martín Chozas, Gonzalo Mena Morales (menamoralesgonzalo at gmail com)
56 | - Spanish translation
57 |
58 | * Oliver Osranek (oos at mail.de)
59 | - German translation
60 |
61 | * Алексей Черемных (КонтинентСвободы.рф)
62 | - Russian translation
63 |
64 | * ZityiSoft Team (zityisoft at gmail.com)
65 | - Hungarian translation
66 |
67 |
68 | Resources
69 | =========
70 |
71 | Website
72 | http://saladin.mimec.org/
73 |
74 | Forum
75 | http://saladin.mimec.org/forum/general
76 |
77 | Bugs & Requests
78 | http://saladin.mimec.org/forum/tracker
79 |
80 | Development
81 | http://wiki.mimec.org/wiki/Saladin
82 |
--------------------------------------------------------------------------------
/configure.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | set prefix="C:\Program Files\Saladin"
4 | set config=release
5 | set msvc=no
6 |
7 | if exist .\saladin.pro goto arg_loop
8 |
9 | echo *** ERROR: cannot find project file in current directory.
10 | goto end
11 |
12 | :arg_loop
13 | if "%1" == "" goto arg_done
14 | if "%1" == "-prefix" goto arg_prefix
15 | if "%1" == "-debug" goto arg_debug
16 | if "%1" == "-msvc" goto arg_msvc
17 | if "%1" == "-help" goto show_usage
18 | if "%1" == "--help" goto show_usage
19 | if "%1" == "/?" goto show_usage
20 |
21 | echo *** ERROR: Unrecognized option '%1'
22 | goto show_usage
23 |
24 | :arg_prefix
25 | set prefix=%2
26 | shift
27 | goto arg_next
28 |
29 | :arg_debug
30 | set config=debug
31 | goto arg_next
32 |
33 | :arg_msvc
34 | set msvc=yes
35 | goto arg_next
36 |
37 | :arg_next
38 | shift
39 | goto arg_loop
40 |
41 | :show_usage
42 | echo Usage: configure [-prefix DIR] [-debug] [-msvc]
43 | echo.
44 | echo Options:
45 | echo.
46 | echo -prefix DIR Set the instalation directory to DIR
47 | echo (default: C:\Program Files\Saladin)
48 | echo -debug Build with debugging symbols
49 | echo -msvc Generate Visual Studio solution
50 | goto end
51 |
52 | :arg_done
53 |
54 | echo Testing for qmake...
55 |
56 | set QMAKE=
57 |
58 | qmake -v >nul 2>nul
59 | if errorlevel 1 goto test_qtdir
60 | set QMAKE=qmake
61 | goto qmake_found
62 |
63 | :test_qtdir
64 | if "%QTDIR%" == "" goto no_qmake
65 | "%QTDIR%\bin\qmake" -v >nul 2>nul
66 | if errorlevel 1 goto no_qmake
67 | set QMAKE=%QTDIR%\bin\qmake
68 | goto qmake_found
69 |
70 | :no_qmake
71 | echo *** ERROR: Cannot find 'qmake' in your PATH.
72 | goto end
73 |
74 | :qmake_found
75 |
76 | echo Writing configuration file...
77 |
78 | echo # this file was generated by configure.bat >config.pri
79 | echo CONFIG += %config% >>config.pri
80 | echo PREFIX = %prefix:\=\\% >>config.pri
81 |
82 | if "%msvc%" == "yes" goto gen_msvc
83 |
84 | echo Generating Makefiles...
85 |
86 | "%QMAKE%" -recursive
87 | if errorlevel 1 goto qmake_failed
88 | echo.
89 | echo Configure finished. Run 'make' or 'nmake' now.
90 | goto end
91 |
92 | :gen_msvc
93 |
94 | echo Generating Visual Studio solution...
95 |
96 | "%QMAKE%" -tp vc -recursive
97 | if errorlevel 1 goto qmake_failed
98 | echo.
99 | echo Configure finished.
100 | goto end
101 |
102 | :qmake_failed
103 | echo *** ERROR: Running 'qmake' failed.
104 |
105 | :end
106 |
--------------------------------------------------------------------------------
/installer/build.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | if "%1" == "" goto usage
4 |
5 | set VERSION=1.0
6 | set BUILDVERSION=1.0.0.6332
7 |
8 | set NSISDIR=C:\Program Files (x86)\NSIS
9 |
10 | if not %1 == x86 goto elsex64
11 |
12 | set BUILDDIR=D:\Release\saladin-x86
13 |
14 | set QTDIR=D:\Qt5\x86-widgets
15 | set OPENSSLDIR=D:\OpenSSL\x86
16 | set VCRTDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT
17 |
18 | set ARCHITECTURE=win_x86
19 | set SUFFIX=
20 |
21 | goto endopt
22 | :elsex64
23 |
24 | if not %1 == x64 goto usage
25 |
26 | set BUILDDIR=D:\Release\saladin-x64
27 |
28 | set QTDIR=D:\Qt5\x64-widgets
29 | set OPENSSLDIR=D:\OpenSSL\x64
30 | set VCRTDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64\Microsoft.VC120.CRT
31 |
32 | set ARCHITECTURE=win_x64
33 | set SUFFIX= (64-bit)
34 |
35 | goto endopt
36 | :usage
37 |
38 | echo usage: build-bat x86^|x64
39 |
40 | goto :eof
41 | :endopt
42 |
43 | call "%QTDIR%\bin\qtvars.bat" vsvars
44 |
45 | if not exist "%BUILDDIR%" mkdir "%BUILDDIR%"
46 |
47 | echo.
48 | echo Exporting...
49 | echo.
50 |
51 | svn export --quiet --force .. "%BUILDDIR%"
52 |
53 | pushd "%BUILDDIR%"
54 |
55 | call configure.bat
56 |
57 | nmake release
58 |
59 | if errorlevel 1 goto cleanup
60 |
61 | call ..\sign.bat release\saladin.exe
62 |
63 | echo.
64 | echo Creating uninstaller...
65 | echo.
66 |
67 | "%NSISDIR%\makensis.exe" /DINNER "/DQTDIR=%QTDIR%" "/DOPENSSLDIR=%OPENSSLDIR%" "/DVCRTDIR=%VCRTDIR%" "/DVERSION=%VERSION%" "/DBUILDVERSION=%BUILDVERSION%" "/DARCHITECTURE=%ARCHITECTURE%" "/DSUFFIX=%SUFFIX%" /V2 installer\saladin.nsi
68 |
69 | if errorlevel 1 goto cleanup
70 |
71 | "%TEMP%\innerinst.exe"
72 |
73 | call ..\sign.bat "%TEMP%\uninstall.exe"
74 |
75 | echo.
76 | echo Creating installer...
77 | echo.
78 |
79 | "%NSISDIR%\makensis.exe" "/DQTDIR=%QTDIR%" "/DOPENSSLDIR=%OPENSSLDIR%" "/DVCRTDIR=%VCRTDIR%" "/DVERSION=%VERSION%" "/DBUILDVERSION=%BUILDVERSION%" "/DARCHITECTURE=%ARCHITECTURE%" "/DSUFFIX=%SUFFIX%" /V2 installer\saladin.nsi
80 |
81 | if errorlevel 1 goto cleanup
82 |
83 | call ..\sign.bat "installer\saladin-%VERSION%-%ARCHITECTURE%.exe"
84 |
85 | :cleanup
86 |
87 | del /q /f "%TEMP%\innerinst.exe"
88 | del /q /f "%TEMP%\uninstall.exe"
89 |
90 | popd
91 |
--------------------------------------------------------------------------------
/installer/images/header.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/installer/images/header.bmp
--------------------------------------------------------------------------------
/installer/images/wizard.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/installer/images/wizard.bmp
--------------------------------------------------------------------------------
/installer/languages/saladin_en.nsh:
--------------------------------------------------------------------------------
1 | LangString NAME ${LANG_ENGLISH} "Saladin"
2 | LangString TITLE ${LANG_ENGLISH} "$(NAME) ${VERSION}"
3 | LangString WELCOME_TEXT ${LANG_ENGLISH} "This wizard will guide you through the installation of $(NAME).$\r$\n$\r$\nIf you are upgrading an existing installation of $(NAME), make sure it is not running.$\r$\n$\r$\nClick Next to continue."
4 | LangString FINISH_TEXT ${LANG_ENGLISH} "$(NAME) has been installed on your computer.$\r$\n$\r$\nClick Finish to close this wizard."
5 | LangString WINVER_TEXT ${LANG_ENGLISH} "$(NAME) requires Windows Vista or newer."
6 |
--------------------------------------------------------------------------------
/installer/qt.conf:
--------------------------------------------------------------------------------
1 | [Paths]
2 | Plugins=../plugins
3 |
--------------------------------------------------------------------------------
/saladin.pro:
--------------------------------------------------------------------------------
1 | include( config.pri )
2 |
3 | TEMPLATE = subdirs
4 | SUBDIRS = src
5 |
6 | translations.files = translations/*.qm translations/locale.ini
7 | translations.path = $$PREFIX/translations
8 | INSTALLS += translations
9 |
--------------------------------------------------------------------------------
/src/aboutbox.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef ABOUTBOX_H
20 | #define ABOUTBOX_H
21 |
22 | class AboutBoxSection;
23 |
24 | class AboutBox : public QDialog
25 | {
26 | Q_OBJECT
27 | public:
28 | AboutBox( const QString& title, const QString& message, QWidget* parent );
29 | ~AboutBox();
30 |
31 | public:
32 | AboutBoxSection* addSection( const QPixmap& pixmap, const QString& message );
33 |
34 | private:
35 | QWidget* m_sectionsWidget;
36 | QBoxLayout* m_sectionsLayout;
37 | };
38 |
39 | class AboutBoxSection : public QFrame
40 | {
41 | Q_OBJECT
42 | public:
43 | AboutBoxSection( const QPixmap& pixmap, const QString& message, QWidget* parent );
44 | ~AboutBoxSection();
45 |
46 | protected:
47 | AboutBoxSection( Qt::WindowFlags flags );
48 |
49 | public:
50 | void setPixmap( const QPixmap& pixmap );
51 | void setMessage( const QString& message );
52 |
53 | QPushButton* addButton( const QString& text );
54 |
55 | void clearButtons();
56 |
57 | private:
58 | void initialize();
59 |
60 | private:
61 | QBoxLayout* m_mainLayout;
62 | QBoxLayout* m_buttonsLayout;
63 |
64 | QLabel* m_pixmapLabel;
65 | QLabel* m_messageLabel;
66 | };
67 |
68 | class AboutBoxToolSection : public AboutBoxSection
69 | {
70 | Q_OBJECT
71 | public:
72 | AboutBoxToolSection();
73 | ~AboutBoxToolSection();
74 |
75 | public: // overrides
76 | bool event( QEvent* e );
77 |
78 | private slots:
79 | void updatePosition();
80 |
81 | private:
82 | QToolButton* m_closeButton;
83 | };
84 |
85 | class AboutBoxScrollArea : public QScrollArea
86 | {
87 | Q_OBJECT
88 | public:
89 | AboutBoxScrollArea( QWidget* parent );
90 | ~AboutBoxScrollArea();
91 |
92 | public: // overrides
93 | QSize sizeHint() const;
94 | };
95 |
96 | #endif
97 |
--------------------------------------------------------------------------------
/src/bookmark.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef BOOKMARK_H
20 | #define BOOKMARK_H
21 |
22 | #include
23 |
24 | class BookmarkPrivate;
25 | class ShellFolder;
26 |
27 | class Bookmark
28 | {
29 | public:
30 | Bookmark();
31 | Bookmark( const QString& name, ShellFolder* folder, bool withPassword );
32 | ~Bookmark();
33 |
34 | Bookmark( const Bookmark& other );
35 | Bookmark& operator =( const Bookmark& other );
36 |
37 | public:
38 | bool isValid() const;
39 |
40 | QString name() const;
41 | void setName( const QString& name );
42 |
43 | QString path() const;
44 | QString user() const;
45 | QString password() const;
46 |
47 | ShellFolder* createFolder( QWidget* parent ) const;
48 |
49 | public:
50 | friend bool operator <( const Bookmark& lhs, const Bookmark& rhs );
51 |
52 | friend QDataStream& operator <<( QDataStream& stream, const Bookmark& bookmark );
53 | friend QDataStream& operator >>( QDataStream& stream, Bookmark& bookmark );
54 |
55 | private:
56 | QSharedDataPointer d;
57 | };
58 |
59 | #endif
60 |
--------------------------------------------------------------------------------
/src/bookmark_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef BOOKMARK_P_H
20 | #define BOOKMARK_P_H
21 |
22 | #include "bookmark.h"
23 |
24 | #include "shell/shellpidl.h"
25 |
26 | class BookmarkPrivate : public QSharedData
27 | {
28 | public:
29 | enum BookmarkType
30 | {
31 | NullBookmark,
32 | PidlBookmark,
33 | FtpBookmark
34 | };
35 |
36 | public:
37 | BookmarkPrivate();
38 | BookmarkPrivate( const BookmarkPrivate& other );
39 | ~BookmarkPrivate();
40 |
41 | public:
42 | QString m_name;
43 |
44 | BookmarkType m_type;
45 |
46 | ShellPidl m_pidl;
47 |
48 | QString m_path;
49 | QString m_user;
50 | QString m_password;
51 | };
52 |
53 | #endif
54 |
--------------------------------------------------------------------------------
/src/bookmarksdialog.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef BOOKMARKSDIALOG_H
20 | #define BOOKMARKSDIALOG_H
21 |
22 | #include "bookmark.h"
23 |
24 | #include "xmlui/client.h"
25 |
26 | #include
27 |
28 | class QTreeWidget;
29 |
30 | class BookmarksDialog : public QDialog, public XmlUi::Client
31 | {
32 | Q_OBJECT
33 | public:
34 | BookmarksDialog( QWidget* parent );
35 | ~BookmarksDialog();
36 |
37 | public: // overrides
38 | void accept();
39 |
40 | private slots:
41 | void editRename();
42 | void editDelete();
43 |
44 | void updateActions();
45 |
46 | void doubleClicked( const QModelIndex& index );
47 | void listContextMenu( const QPoint& pos );
48 |
49 | private:
50 | void populateList();
51 |
52 | private:
53 | QTreeWidget* m_list;
54 |
55 | QList m_bookmarks;
56 | };
57 |
58 | #endif
59 |
--------------------------------------------------------------------------------
/src/drivestripmanager.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef DRIVESTRIPMANAGER_H
20 | #define DRIVESTRIPMANAGER_H
21 |
22 | #include "shell/shelldrive.h"
23 | #include "shell/shellcomputer.h"
24 | #include "xmlui/toolstrip.h"
25 |
26 | #include
27 |
28 | class DriveStripManager : public QObject
29 | {
30 | Q_OBJECT
31 | public:
32 | explicit DriveStripManager( QWidget* parent );
33 | ~DriveStripManager();
34 |
35 | public:
36 | ShellComputer* computer() const { return m_computer; }
37 |
38 | ShellDrive driveAt( int index ) const;
39 | ShellDrive driveAt( XmlUi::ToolStrip* strip, const QPoint& pos ) const;
40 |
41 | ShellDrive driveFromFolder( ShellFolder* folder ) const;
42 |
43 | void registerToolStrip( XmlUi::ToolStrip* strip, QObject* receiver, const char* member );
44 |
45 | void showDrivesMenu( XmlUi::ToolStrip* strip );
46 |
47 | public slots:
48 | void refresh();
49 |
50 | public: // overrides
51 | bool eventFilter( QObject* watched, QEvent* e );
52 |
53 | private slots:
54 | void driveChanged( const ShellDrive& drive );
55 |
56 | private:
57 | struct StripInfo
58 | {
59 | XmlUi::ToolStrip* m_strip;
60 | QSignalMapper* m_mapper;
61 | QList m_actions;
62 | };
63 |
64 | private:
65 | void populateToolStrip( StripInfo& info );
66 |
67 | bool stripDragEnterEvent( XmlUi::ToolStrip* strip, QDragEnterEvent* e );
68 | bool stripDragMoveEvent( XmlUi::ToolStrip* strip, QDragMoveEvent* e );
69 | bool stripDragLeaveEvent( XmlUi::ToolStrip* strip, QDragLeaveEvent* e );
70 | bool stripDropEvent( XmlUi::ToolStrip* strip, QDropEvent* e );
71 |
72 | bool dragDropHelper( XmlUi::ToolStrip* strip, QDropEvent* e, bool doDrop );
73 |
74 | private:
75 | ShellComputer* m_computer;
76 | QList m_drives;
77 |
78 | QList m_strips;
79 |
80 | ShellDropData* m_dropData;
81 |
82 | friend class ShellDriveLessThan;
83 | };
84 |
85 | #endif
86 |
--------------------------------------------------------------------------------
/src/folderitemdelegate.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "folderitemdelegate.h"
20 | #include "application.h"
21 |
22 | FolderItemDelegate::FolderItemDelegate( QObject* parent ) : QStyledItemDelegate( parent )
23 | {
24 | }
25 |
26 | FolderItemDelegate::~FolderItemDelegate()
27 | {
28 | }
29 |
30 | void FolderItemDelegate::updateEditorGeometry( QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& /*index*/ ) const
31 | {
32 | QPalette palette = Application::palette();
33 | palette.setColor( QPalette::Text, palette.color( QPalette::WindowText ) );
34 | editor->setPalette( palette );
35 |
36 | editor->setGeometry( option.rect.adjusted( 21, 0, 0, 0 ) );
37 | }
38 |
39 | bool FolderItemDelegate::eventFilter( QObject* object, QEvent* e )
40 | {
41 | if ( e->type() == QEvent::KeyPress ) {
42 | QKeyEvent* keyEvent = static_cast( e );
43 | switch ( keyEvent->key() ) {
44 | case Qt::Key_Tab:
45 | case Qt::Key_Backtab:
46 | return false;
47 | }
48 | }
49 |
50 | return QStyledItemDelegate::eventFilter( object, e );
51 | }
52 |
--------------------------------------------------------------------------------
/src/folderitemdelegate.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef FOLDERITEMDELEGATE_H
20 | #define FOLDERITEMDELEGATE_H
21 |
22 | #include "shell/shellitem.h"
23 | #include "shell/shellfolder.h"
24 |
25 | #include
26 |
27 | class FolderItemDelegate : public QStyledItemDelegate
28 | {
29 | Q_OBJECT
30 | public:
31 | explicit FolderItemDelegate( QObject* parent );
32 | ~FolderItemDelegate();
33 |
34 | public: // overrides
35 | void updateEditorGeometry( QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index ) const;
36 |
37 | bool eventFilter( QObject* object, QEvent* e );
38 | };
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/src/folderitemview.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef FOLDERITEMVIEW_H
20 | #define FOLDERITEMVIEW_H
21 |
22 | #include
23 |
24 | class FolderItemView : public QTreeView
25 | {
26 | Q_OBJECT
27 | public:
28 | explicit FolderItemView( QWidget* parent );
29 | ~FolderItemView();
30 |
31 | public:
32 | bool isEditing() const;
33 |
34 | QModelIndex movePageUp();
35 | QModelIndex movePageDown();
36 |
37 | void setAnchor( const QModelIndex& index );
38 | QModelIndex anchor() const;
39 |
40 | bool isDragging() const;
41 | void setDragging( bool dragging );
42 |
43 | void highlightDropItem( const QModelIndex& index );
44 |
45 | void checkAutoScroll( const QPoint& pos );
46 |
47 | protected: // overrides
48 | void drawRow( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const;
49 |
50 | void currentChanged( const QModelIndex& current, const QModelIndex& previous );
51 |
52 | private:
53 | QPersistentModelIndex m_anchor;
54 | };
55 |
56 | #endif
57 |
--------------------------------------------------------------------------------
/src/guide/en/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Quick Guide to Saladin
4 |
5 |
6 |
7 |
8 |
Quick Guide to Saladin
9 |
10 |
The main window of Saladin consists of a toolbar for accessing commonly used functions and tools. The toolbar can be hidden using the Collapse Toolbar command in the upper right corner of the window. When the toolbar is collapsed, a menu bar is displayed containing all functions and tools. To display the toolbar again, use the Expand Toolbar command.
11 |
12 |
Below the toolbar there are two panels for working with directories. Each panel consists of a drive bar, location bar, list of files and status bar. One of the panels is active and acts as the source panel for copy/move operations; the other panel is the target panel. You can clicking anywhere on a panel to activate it or press Tab to switch the active panel. The source and target panels can be distinguished by the color of the location bar.
13 |
14 |
The drive bar displays buttons representing all available hard disks and other drives connected to the computer. You can click on the drive button to open the root directory of the drive in the panel beneath it. You can also press Alt+F1 or Alt+F2 to select a drive using a drop down list in the right or left panel, respectively. Right click on the drive bar and select Refresh Drives in case the bar doesn't refresh automatically when adding or removing a drive.
15 |
16 |
The location bar displays the path of the current directory or the name if it has no physical path. You can type the location of the directory in the location bar and press Enter to open it. Click on the location bar or press Ctrl+O to activate it. You can also select Open (Ctrl+Shift+O) to browse for a directory.
17 |
18 |
The file list displays the contents of the current directory.
19 |
20 |
The status bar displays the number and total size of selected items and all items in the current directory. It also displays the name, capacity and amount of free space on the current drive.
The following commans can be used in the name and extension masks when renaming or cloning multiple files:
11 |
12 |
13 |
14 |
Command
15 |
Description
16 |
17 |
18 |
[n:from:to]
19 |
20 | Insert part of the original file name (without extension). Optional start and end position can be entered (positive value means offset from the start, negative value means offset from the start). For example:
21 |
22 |
[n] - entire file name
23 |
[n:3] - 3rd character of the file name
24 |
[n:3:] - file name from 3rd character to the end
25 |
[n:3:6] - file name from 3rd character to 6th character
26 |
[n:3:-2] - file name from 3rd character to 2nd character from the end
27 |
28 |
29 |
30 |
31 |
[e:from:to]
32 |
Insert part of the original extension. Optional start and end position can be entered (analogous to the [n] pattern).
33 |
34 |
35 |
[c:width:from:step]
36 |
37 | Insert the value of a counter. Optional width, start number and step can be entered. For example:
38 |
Los siguientes comandos se pueden utilizar en los campos de nombre y extensión al cambiar de nombre o clonar varios archivos:
12 |
13 |
14 |
15 |
Comando
16 |
Descripción
17 |
18 |
19 |
[n:de:a]
20 |
Introduce parte del nombre original del archivo (sin extensión). Puede añadir opcionalmente la posición de inicio y final (los valores positivos comienzan desde el principio; los negativos, desde el final). Por ejemplo:
[n] - nombre del archivo completo
21 |
[n:3] - tercer carácter del nombre del archivo
22 |
[n:3:] - nombre del archivo desde el tercer carácter hasta el final
23 |
[n:3:6] - nombre del archivo desde el tercer carácter hasta el sexto
24 |
[n:3:-2] - nombre del archivo desde el tercer carácter hasta el segundo empezando por el final
25 |
26 |
27 |
[e:de:a]
28 |
Introduce parte de la extensión original. Puede añadir opcionalmente la posición de inicio y final (de igual manera que con el patrón [n])
29 |
30 |
31 |
[c:ancho:desde:incremento]
32 |
Añade el valor de un medidor. Se pueden añadir opcionalmente el ancho, el número de comienzo y el incremento. Por ejemplo:
Se pueden usar los siguientes caracteres comodín cuando seleccione o deseleccione archivos mediante una máscara o cuando busque archivos.
12 |
13 |
14 |
15 |
Carácter comodín
16 |
Descripción
17 |
18 |
19 |
?
20 |
Representa cualquier carácter.
21 |
22 |
23 |
*
24 |
Representa cero o más elementos de cualquier carácter.
25 |
26 |
27 |
[...]
28 |
Representa cualquier carácter presente en la lista. Dentro de la lista se puede utilizar un guion para indicar un rango de caracteres, por ejemplo, [0-9] representa cualquier dígito.
29 |
30 |
31 |
[^...]
32 |
Representa cualquier carácter que no aparezca en la lista.
33 |
34 |
35 |
;
36 |
Puede utilizarse para separar dos o más patrones.
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/guide/guide.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | style.css
4 | en/functions.html
5 | en/index.html
6 | en/lists.html
7 | en/masks.html
8 | en/regexps.html
9 | en/shortcuts.html
10 | en/tools.html
11 | en/viewer.html
12 | en/wildcards.html
13 | es/functions.html
14 | es/index.html
15 | es/lists.html
16 | es/masks.html
17 | es/regexps.html
18 | es/shortcuts.html
19 | es/tools.html
20 | es/viewer.html
21 | es/wildcards.html
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/guide/style.css:
--------------------------------------------------------------------------------
1 | body
2 | {
3 | font-size: large;
4 | }
5 | h1
6 | {
7 | font-size: x-large;
8 | font-weight: bold;
9 | color: #358;
10 | margin: 0 0 1em 0;
11 | }
12 | h2
13 | {
14 | font-size: large;
15 | font-weight: bold;
16 | color: #358;
17 | margin: 0 0 1em 0;
18 | }
19 | p
20 | {
21 | margin: 0 0 0.8em 0;
22 | }
23 | table
24 | {
25 | margin: 0.8em 0 0.8em 0;
26 | }
27 | th
28 | {
29 | background-color: #ccf;
30 | padding: 0.2em;
31 | }
32 | td
33 | {
34 | background-color: #eee;
35 | padding: 0.2em;
36 | }
37 |
--------------------------------------------------------------------------------
/src/guidedialog.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef GUIDEDIALOG_H
20 | #define GUIDEDIALOG_H
21 |
22 | #include "bookmark.h"
23 |
24 | #include "xmlui/client.h"
25 |
26 | #include
27 |
28 | class QTreeWidget;
29 |
30 | class GuideDialog : public QDialog, public XmlUi::Client
31 | {
32 | Q_OBJECT
33 | public:
34 | GuideDialog( QWidget* parent );
35 | ~GuideDialog();
36 |
37 | private slots:
38 | void goBack();
39 | void goForward();
40 | void goHome();
41 |
42 | void updateActions();
43 |
44 | void loadIcons();
45 |
46 | private:
47 | QLabel* m_promptPixmap;
48 |
49 | QTextBrowser* m_browser;
50 | };
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/src/icons/about-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/about-16.png
--------------------------------------------------------------------------------
/src/icons/arrow-down-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-down-16.png
--------------------------------------------------------------------------------
/src/icons/arrow-hide-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-hide-16.png
--------------------------------------------------------------------------------
/src/icons/arrow-left-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-left-16.png
--------------------------------------------------------------------------------
/src/icons/arrow-right-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-right-16.png
--------------------------------------------------------------------------------
/src/icons/arrow-top-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-top-16.png
--------------------------------------------------------------------------------
/src/icons/arrow-up-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-up-16.png
--------------------------------------------------------------------------------
/src/icons/black-background-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/black-background-16.png
--------------------------------------------------------------------------------
/src/icons/bookmark-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/bookmark-16.png
--------------------------------------------------------------------------------
/src/icons/bookmark-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/bookmark-22.png
--------------------------------------------------------------------------------
/src/icons/browse-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/browse-16.png
--------------------------------------------------------------------------------
/src/icons/browse-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/browse-22.png
--------------------------------------------------------------------------------
/src/icons/calculate-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/calculate-16.png
--------------------------------------------------------------------------------
/src/icons/calculate-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/calculate-22.png
--------------------------------------------------------------------------------
/src/icons/clone-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/clone-16.png
--------------------------------------------------------------------------------
/src/icons/clone-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/clone-22.png
--------------------------------------------------------------------------------
/src/icons/close-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/close-16.png
--------------------------------------------------------------------------------
/src/icons/compare-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/compare-16.png
--------------------------------------------------------------------------------
/src/icons/compare-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/compare-22.png
--------------------------------------------------------------------------------
/src/icons/configure-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/configure-16.png
--------------------------------------------------------------------------------
/src/icons/configure-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/configure-22.png
--------------------------------------------------------------------------------
/src/icons/copy-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/copy-16.png
--------------------------------------------------------------------------------
/src/icons/copy-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/copy-22.png
--------------------------------------------------------------------------------
/src/icons/copy-names-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/copy-names-16.png
--------------------------------------------------------------------------------
/src/icons/dark/about-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/about-16.png
--------------------------------------------------------------------------------
/src/icons/dark/arrow-down-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-down-16.png
--------------------------------------------------------------------------------
/src/icons/dark/arrow-hide-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-hide-16.png
--------------------------------------------------------------------------------
/src/icons/dark/arrow-left-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-left-16.png
--------------------------------------------------------------------------------
/src/icons/dark/arrow-right-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-right-16.png
--------------------------------------------------------------------------------
/src/icons/dark/arrow-top-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-top-16.png
--------------------------------------------------------------------------------
/src/icons/dark/arrow-up-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-up-16.png
--------------------------------------------------------------------------------
/src/icons/dark/black-background-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/black-background-16.png
--------------------------------------------------------------------------------
/src/icons/dark/bookmark-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/bookmark-16.png
--------------------------------------------------------------------------------
/src/icons/dark/bookmark-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/bookmark-22.png
--------------------------------------------------------------------------------
/src/icons/dark/browse-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/browse-16.png
--------------------------------------------------------------------------------
/src/icons/dark/browse-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/browse-22.png
--------------------------------------------------------------------------------
/src/icons/dark/calculate-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/calculate-16.png
--------------------------------------------------------------------------------
/src/icons/dark/calculate-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/calculate-22.png
--------------------------------------------------------------------------------
/src/icons/dark/clone-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/clone-16.png
--------------------------------------------------------------------------------
/src/icons/dark/clone-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/clone-22.png
--------------------------------------------------------------------------------
/src/icons/dark/close-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/close-16.png
--------------------------------------------------------------------------------
/src/icons/dark/compare-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/compare-16.png
--------------------------------------------------------------------------------
/src/icons/dark/compare-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/compare-22.png
--------------------------------------------------------------------------------
/src/icons/dark/configure-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/configure-16.png
--------------------------------------------------------------------------------
/src/icons/dark/configure-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/configure-22.png
--------------------------------------------------------------------------------
/src/icons/dark/copy-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/copy-16.png
--------------------------------------------------------------------------------
/src/icons/dark/copy-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/copy-22.png
--------------------------------------------------------------------------------
/src/icons/dark/copy-names-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/copy-names-16.png
--------------------------------------------------------------------------------
/src/icons/dark/delete-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/delete-16.png
--------------------------------------------------------------------------------
/src/icons/dark/delete-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/delete-22.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-16.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-22.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-copy-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-copy-16.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-copy-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-copy-22.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-cut-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-cut-16.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-cut-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-cut-22.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-paste-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-paste-16.png
--------------------------------------------------------------------------------
/src/icons/dark/edit-paste-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-paste-22.png
--------------------------------------------------------------------------------
/src/icons/dark/encoding-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/encoding-16.png
--------------------------------------------------------------------------------
/src/icons/dark/explore-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/explore-16.png
--------------------------------------------------------------------------------
/src/icons/dark/explore-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/explore-22.png
--------------------------------------------------------------------------------
/src/icons/dark/file-new-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/file-new-16.png
--------------------------------------------------------------------------------
/src/icons/dark/file-new-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/file-new-22.png
--------------------------------------------------------------------------------
/src/icons/dark/find-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-16.png
--------------------------------------------------------------------------------
/src/icons/dark/find-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-22.png
--------------------------------------------------------------------------------
/src/icons/dark/find-next-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-next-16.png
--------------------------------------------------------------------------------
/src/icons/dark/find-previous-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-previous-16.png
--------------------------------------------------------------------------------
/src/icons/dark/find-text-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-text-16.png
--------------------------------------------------------------------------------
/src/icons/dark/folder-compare-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/folder-compare-16.png
--------------------------------------------------------------------------------
/src/icons/dark/folder-new-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/folder-new-16.png
--------------------------------------------------------------------------------
/src/icons/dark/folder-new-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/folder-new-22.png
--------------------------------------------------------------------------------
/src/icons/dark/ftp-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/ftp-16.png
--------------------------------------------------------------------------------
/src/icons/dark/ftp-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/ftp-22.png
--------------------------------------------------------------------------------
/src/icons/dark/fullscreen-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/fullscreen-16.png
--------------------------------------------------------------------------------
/src/icons/dark/fullscreen-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/fullscreen-22.png
--------------------------------------------------------------------------------
/src/icons/dark/gear-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/gear-16.png
--------------------------------------------------------------------------------
/src/icons/dark/goto-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/goto-16.png
--------------------------------------------------------------------------------
/src/icons/dark/goto-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/goto-22.png
--------------------------------------------------------------------------------
/src/icons/dark/help-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/help-16.png
--------------------------------------------------------------------------------
/src/icons/dark/help-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/help-22.png
--------------------------------------------------------------------------------
/src/icons/dark/hex-mode-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/hex-mode-16.png
--------------------------------------------------------------------------------
/src/icons/dark/history-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/history-16.png
--------------------------------------------------------------------------------
/src/icons/dark/home-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/home-16.png
--------------------------------------------------------------------------------
/src/icons/dark/info-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/info-16.png
--------------------------------------------------------------------------------
/src/icons/dark/info-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/info-22.png
--------------------------------------------------------------------------------
/src/icons/dark/license-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/license-16.png
--------------------------------------------------------------------------------
/src/icons/dark/line-numbers-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/line-numbers-16.png
--------------------------------------------------------------------------------
/src/icons/dark/move-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/move-16.png
--------------------------------------------------------------------------------
/src/icons/dark/move-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/move-22.png
--------------------------------------------------------------------------------
/src/icons/dark/multi-rename-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/multi-rename-16.png
--------------------------------------------------------------------------------
/src/icons/dark/multi-rename-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/multi-rename-22.png
--------------------------------------------------------------------------------
/src/icons/dark/open-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/open-16.png
--------------------------------------------------------------------------------
/src/icons/dark/pack-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pack-16.png
--------------------------------------------------------------------------------
/src/icons/dark/pack-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pack-22.png
--------------------------------------------------------------------------------
/src/icons/dark/pane-same-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pane-same-16.png
--------------------------------------------------------------------------------
/src/icons/dark/pane-swap-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pane-swap-16.png
--------------------------------------------------------------------------------
/src/icons/dark/refresh-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/refresh-16.png
--------------------------------------------------------------------------------
/src/icons/dark/refresh-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/refresh-22.png
--------------------------------------------------------------------------------
/src/icons/dark/rename-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rename-16.png
--------------------------------------------------------------------------------
/src/icons/dark/rename-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rename-22.png
--------------------------------------------------------------------------------
/src/icons/dark/rotate-left-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rotate-left-16.png
--------------------------------------------------------------------------------
/src/icons/dark/rotate-right-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rotate-right-16.png
--------------------------------------------------------------------------------
/src/icons/dark/saladin-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-16.png
--------------------------------------------------------------------------------
/src/icons/dark/saladin-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-22.png
--------------------------------------------------------------------------------
/src/icons/dark/saladin-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-32.png
--------------------------------------------------------------------------------
/src/icons/dark/saladin-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-48.png
--------------------------------------------------------------------------------
/src/icons/dark/select-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-16.png
--------------------------------------------------------------------------------
/src/icons/dark/select-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-22.png
--------------------------------------------------------------------------------
/src/icons/dark/select-all-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-all-16.png
--------------------------------------------------------------------------------
/src/icons/dark/select-invert-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-invert-16.png
--------------------------------------------------------------------------------
/src/icons/dark/terminal-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/terminal-16.png
--------------------------------------------------------------------------------
/src/icons/dark/terminal-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/terminal-22.png
--------------------------------------------------------------------------------
/src/icons/dark/trashcan-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/trashcan-16.png
--------------------------------------------------------------------------------
/src/icons/dark/trashcan-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/trashcan-22.png
--------------------------------------------------------------------------------
/src/icons/dark/type-binary-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/type-binary-16.png
--------------------------------------------------------------------------------
/src/icons/dark/type-image-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/type-image-16.png
--------------------------------------------------------------------------------
/src/icons/dark/type-text-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/type-text-16.png
--------------------------------------------------------------------------------
/src/icons/dark/unselect-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/unselect-16.png
--------------------------------------------------------------------------------
/src/icons/dark/unselect-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/unselect-22.png
--------------------------------------------------------------------------------
/src/icons/dark/unselect-all-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/unselect-all-16.png
--------------------------------------------------------------------------------
/src/icons/dark/view-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-16.png
--------------------------------------------------------------------------------
/src/icons/dark/view-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-22.png
--------------------------------------------------------------------------------
/src/icons/dark/view-hidden-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-hidden-16.png
--------------------------------------------------------------------------------
/src/icons/dark/view-hidden-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-hidden-22.png
--------------------------------------------------------------------------------
/src/icons/dark/view-selected-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-selected-16.png
--------------------------------------------------------------------------------
/src/icons/dark/warning-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/warning-16.png
--------------------------------------------------------------------------------
/src/icons/dark/web-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/web-16.png
--------------------------------------------------------------------------------
/src/icons/dark/word-wrap-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/word-wrap-16.png
--------------------------------------------------------------------------------
/src/icons/dark/zoom-fit-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-fit-16.png
--------------------------------------------------------------------------------
/src/icons/dark/zoom-in-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-in-16.png
--------------------------------------------------------------------------------
/src/icons/dark/zoom-orig-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-orig-16.png
--------------------------------------------------------------------------------
/src/icons/dark/zoom-out-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-out-16.png
--------------------------------------------------------------------------------
/src/icons/delete-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/delete-16.png
--------------------------------------------------------------------------------
/src/icons/delete-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/delete-22.png
--------------------------------------------------------------------------------
/src/icons/edit-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-16.png
--------------------------------------------------------------------------------
/src/icons/edit-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-22.png
--------------------------------------------------------------------------------
/src/icons/edit-copy-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-copy-16.png
--------------------------------------------------------------------------------
/src/icons/edit-copy-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-copy-22.png
--------------------------------------------------------------------------------
/src/icons/edit-cut-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-cut-16.png
--------------------------------------------------------------------------------
/src/icons/edit-cut-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-cut-22.png
--------------------------------------------------------------------------------
/src/icons/edit-paste-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-paste-16.png
--------------------------------------------------------------------------------
/src/icons/edit-paste-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-paste-22.png
--------------------------------------------------------------------------------
/src/icons/encoding-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/encoding-16.png
--------------------------------------------------------------------------------
/src/icons/explore-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/explore-16.png
--------------------------------------------------------------------------------
/src/icons/explore-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/explore-22.png
--------------------------------------------------------------------------------
/src/icons/file-new-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/file-new-16.png
--------------------------------------------------------------------------------
/src/icons/file-new-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/file-new-22.png
--------------------------------------------------------------------------------
/src/icons/find-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-16.png
--------------------------------------------------------------------------------
/src/icons/find-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-22.png
--------------------------------------------------------------------------------
/src/icons/find-next-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-next-16.png
--------------------------------------------------------------------------------
/src/icons/find-previous-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-previous-16.png
--------------------------------------------------------------------------------
/src/icons/find-text-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-text-16.png
--------------------------------------------------------------------------------
/src/icons/folder-compare-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/folder-compare-16.png
--------------------------------------------------------------------------------
/src/icons/folder-new-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/folder-new-16.png
--------------------------------------------------------------------------------
/src/icons/folder-new-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/folder-new-22.png
--------------------------------------------------------------------------------
/src/icons/ftp-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/ftp-16.png
--------------------------------------------------------------------------------
/src/icons/ftp-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/ftp-22.png
--------------------------------------------------------------------------------
/src/icons/fullscreen-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/fullscreen-16.png
--------------------------------------------------------------------------------
/src/icons/fullscreen-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/fullscreen-22.png
--------------------------------------------------------------------------------
/src/icons/gear-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/gear-16.png
--------------------------------------------------------------------------------
/src/icons/goto-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/goto-16.png
--------------------------------------------------------------------------------
/src/icons/goto-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/goto-22.png
--------------------------------------------------------------------------------
/src/icons/help-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/help-16.png
--------------------------------------------------------------------------------
/src/icons/help-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/help-22.png
--------------------------------------------------------------------------------
/src/icons/hex-mode-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/hex-mode-16.png
--------------------------------------------------------------------------------
/src/icons/history-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/history-16.png
--------------------------------------------------------------------------------
/src/icons/home-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/home-16.png
--------------------------------------------------------------------------------
/src/icons/info-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/info-16.png
--------------------------------------------------------------------------------
/src/icons/license-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/license-16.png
--------------------------------------------------------------------------------
/src/icons/line-numbers-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/line-numbers-16.png
--------------------------------------------------------------------------------
/src/icons/move-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/move-16.png
--------------------------------------------------------------------------------
/src/icons/move-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/move-22.png
--------------------------------------------------------------------------------
/src/icons/multi-rename-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/multi-rename-16.png
--------------------------------------------------------------------------------
/src/icons/multi-rename-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/multi-rename-22.png
--------------------------------------------------------------------------------
/src/icons/open-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/open-16.png
--------------------------------------------------------------------------------
/src/icons/pack-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pack-16.png
--------------------------------------------------------------------------------
/src/icons/pack-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pack-22.png
--------------------------------------------------------------------------------
/src/icons/pane-same-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pane-same-16.png
--------------------------------------------------------------------------------
/src/icons/pane-swap-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pane-swap-16.png
--------------------------------------------------------------------------------
/src/icons/refresh-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/refresh-16.png
--------------------------------------------------------------------------------
/src/icons/refresh-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/refresh-22.png
--------------------------------------------------------------------------------
/src/icons/rename-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rename-16.png
--------------------------------------------------------------------------------
/src/icons/rename-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rename-22.png
--------------------------------------------------------------------------------
/src/icons/rotate-left-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rotate-left-16.png
--------------------------------------------------------------------------------
/src/icons/rotate-right-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rotate-right-16.png
--------------------------------------------------------------------------------
/src/icons/saladin-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-16.png
--------------------------------------------------------------------------------
/src/icons/saladin-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-22.png
--------------------------------------------------------------------------------
/src/icons/saladin-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-32.png
--------------------------------------------------------------------------------
/src/icons/saladin-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-48.png
--------------------------------------------------------------------------------
/src/icons/select-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-16.png
--------------------------------------------------------------------------------
/src/icons/select-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-22.png
--------------------------------------------------------------------------------
/src/icons/select-all-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-all-16.png
--------------------------------------------------------------------------------
/src/icons/select-invert-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-invert-16.png
--------------------------------------------------------------------------------
/src/icons/terminal-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/terminal-16.png
--------------------------------------------------------------------------------
/src/icons/terminal-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/terminal-22.png
--------------------------------------------------------------------------------
/src/icons/trashcan-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/trashcan-16.png
--------------------------------------------------------------------------------
/src/icons/trashcan-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/trashcan-22.png
--------------------------------------------------------------------------------
/src/icons/type-binary-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/type-binary-16.png
--------------------------------------------------------------------------------
/src/icons/type-image-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/type-image-16.png
--------------------------------------------------------------------------------
/src/icons/type-text-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/type-text-16.png
--------------------------------------------------------------------------------
/src/icons/unselect-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/unselect-16.png
--------------------------------------------------------------------------------
/src/icons/unselect-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/unselect-22.png
--------------------------------------------------------------------------------
/src/icons/unselect-all-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/unselect-all-16.png
--------------------------------------------------------------------------------
/src/icons/view-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-16.png
--------------------------------------------------------------------------------
/src/icons/view-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-22.png
--------------------------------------------------------------------------------
/src/icons/view-hidden-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-hidden-16.png
--------------------------------------------------------------------------------
/src/icons/view-hidden-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-hidden-22.png
--------------------------------------------------------------------------------
/src/icons/view-selected-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-selected-16.png
--------------------------------------------------------------------------------
/src/icons/warning-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/warning-16.png
--------------------------------------------------------------------------------
/src/icons/web-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/web-16.png
--------------------------------------------------------------------------------
/src/icons/word-wrap-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/word-wrap-16.png
--------------------------------------------------------------------------------
/src/icons/zoom-fit-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-fit-16.png
--------------------------------------------------------------------------------
/src/icons/zoom-in-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-in-16.png
--------------------------------------------------------------------------------
/src/icons/zoom-orig-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-orig-16.png
--------------------------------------------------------------------------------
/src/icons/zoom-out-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-out-16.png
--------------------------------------------------------------------------------
/src/main.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "application.h"
20 |
21 | int main( int argc, char** argv )
22 | {
23 | Application application( argc, argv );
24 |
25 | return application.exec();
26 | }
27 |
--------------------------------------------------------------------------------
/src/multirenamewidget.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef MULTIRENAMEWIDGET_H
20 | #define MULTIRENAMEWIDGET_H
21 |
22 | #include
23 |
24 | class MultiRenameWidget : public QWidget
25 | {
26 | Q_OBJECT
27 | public:
28 | explicit MultiRenameWidget( QWidget* parent );
29 | ~MultiRenameWidget();
30 |
31 | public:
32 | void setInputNames( const QStringList& names );
33 |
34 | const QStringList& outputNames() const { return m_outputNames; }
35 |
36 | private slots:
37 | void transformNames();
38 |
39 | private:
40 | QStringList m_inputNames;
41 | QStringList m_outputNames;
42 |
43 | QLineEdit* m_nameEdit;
44 | QLineEdit* m_extensionEdit;
45 | QLineEdit* m_searchEdit;
46 | QLineEdit* m_replaceEdit;
47 |
48 | QCheckBox* m_regExpCheckBox;
49 | QCheckBox* m_caseCheckBox;
50 | QComboBox* m_caseComboBox;
51 |
52 | QTreeWidget* m_list;
53 | };
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/src/openftpdialog.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef OPENFTPDIALOG_H
20 | #define OPENFTPDIALOG_H
21 |
22 | #include
23 |
24 | class OpenFtpDialog : public QDialog
25 | {
26 | Q_OBJECT
27 | public:
28 | OpenFtpDialog( QWidget* parent );
29 | ~OpenFtpDialog();
30 |
31 | public:
32 | void setPath( const QString& path );
33 | void setUser( const QString& user );
34 | void setPassword( const QString& password );
35 |
36 | QString path();
37 |
38 | public: // overrides
39 | void accept();
40 |
41 | private:
42 | QLineEdit* m_hostEdit;
43 | QSpinBox* m_portSpinBox;
44 | QLineEdit* m_pathEdit;
45 | QCheckBox* m_anonymousCheckBox;
46 | QLineEdit* m_userEdit;
47 | QLineEdit* m_passwordEdit;
48 | };
49 |
50 | #endif
51 |
--------------------------------------------------------------------------------
/src/precompiled.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef PRECOMPILED_H
20 | #define PRECOMPILED_H
21 |
22 | #include
23 | #include
24 |
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/src/resources/binaryview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/src/resources/bookmarksdialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/src/resources/guidedialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/resources/imageview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
21 |
22 |
--------------------------------------------------------------------------------
/src/resources/resources.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | binaryview.xml
4 | bookmarksdialog.xml
5 | guidedialog.xml
6 | imageview.xml
7 | mainwindow.xml
8 | searchdialog.xml
9 | textview.xml
10 | viewerwindow.xml
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/resources/searchdialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/src/resources/textview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
--------------------------------------------------------------------------------
/src/resources/viewerwindow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/saladin.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/saladin.ico
--------------------------------------------------------------------------------
/src/saladin.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/saladin.rc
--------------------------------------------------------------------------------
/src/searchdialog.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SEARCHDIALOG_H
20 | #define SEARCHDIALOG_H
21 |
22 | #include "xmlui/client.h"
23 |
24 | #include
25 |
26 | class ShellFolder;
27 | class FolderItemView;
28 | class SearchItemModel;
29 | class SearchProxyModel;
30 | class ElidedLabel;
31 |
32 | class SearchDialog : public QDialog, public XmlUi::Client
33 | {
34 | Q_OBJECT
35 | public:
36 | SearchDialog( ShellFolder* folder, QWidget* parent );
37 | ~SearchDialog();
38 |
39 | public: // overrides
40 | void accept();
41 | void reject();
42 |
43 | private slots:
44 | void textToggled( bool on );
45 |
46 | void folderEntered( const QString& path );
47 | void updateResults();
48 |
49 | void searchCompleted();
50 |
51 | void contextMenuRequested( const QPoint& pos );
52 |
53 | void itemDoubleClicked( const QModelIndex& index );
54 |
55 | void viewCurrent();
56 | void viewAll();
57 | void editCurrent();
58 | void gotoFile();
59 |
60 | void copyNames();
61 |
62 | private:
63 | ShellFolder* m_folder;
64 |
65 | QLineEdit* m_locationEdit;
66 | QComboBox* m_patternComboBox;
67 |
68 | QCheckBox* m_textCheckBox;
69 | QComboBox* m_textComboBox;
70 | QCheckBox* m_caseCheckBox;
71 |
72 | QDialogButtonBox* m_buttonBox;
73 |
74 | FolderItemView* m_view;
75 |
76 | SearchItemModel* m_model;
77 | SearchProxyModel* m_proxyModel;
78 |
79 | ElidedLabel* m_searchStatus;
80 | ElidedLabel* m_itemsStatus;
81 | };
82 |
83 | #endif
84 |
--------------------------------------------------------------------------------
/src/searchhelper.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SEARCHHELPER_H
20 | #define SEARCHHELPER_H
21 |
22 | #include
23 |
24 | class SearchHelper : public QThread
25 | {
26 | Q_OBJECT
27 | public:
28 | SearchHelper( const QString& pattern, Qt::CaseSensitivity cs );
29 | ~SearchHelper();
30 |
31 | public:
32 | void search( const QStringList& files );
33 |
34 | QList results();
35 |
36 | void abort();
37 |
38 | signals:
39 | void completed();
40 |
41 | protected: // overrides
42 | void run();
43 |
44 | private:
45 | QStringMatcher m_matcher;
46 |
47 | QMutex m_mutex;
48 |
49 | QWaitCondition m_condition;
50 |
51 | QStringList m_files;
52 |
53 | int m_index;
54 | QList m_results;
55 |
56 | bool m_aborted;
57 | };
58 |
59 | #endif
60 |
--------------------------------------------------------------------------------
/src/shell/changenotifywatcher_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef CHANGENOTIFYWATCHER_P_H
20 | #define CHANGENOTIFYWATCHER_P_H
21 |
22 | #include
23 |
24 | #include
25 |
26 | class ChangeNotifyWatcher : public QObject
27 | {
28 | Q_OBJECT
29 | public:
30 | ChangeNotifyWatcher( LPITEMIDLIST pidl, int eventTypes, QObject* parent );
31 | ~ChangeNotifyWatcher();
32 |
33 | public:
34 | bool isValid() const;
35 |
36 | signals:
37 | void changeNotify( int eventType, void* arg1, void* arg2 );
38 |
39 | private:
40 | friend LRESULT CALLBACK ChangeNotifyWatcherProc( HWND window, UINT message, WPARAM wparam, LPARAM lparam );
41 |
42 | private:
43 | HWND m_window;
44 |
45 | ULONG m_registerId;
46 | };
47 |
48 | #endif
49 |
--------------------------------------------------------------------------------
/src/shell/iconcache.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "iconcache_p.h"
20 |
21 | #include
22 |
23 | static QPixmap loadIcon( LPCWSTR pattern, int attributes )
24 | {
25 | SHFILEINFO info;
26 | DWORD_PTR list = SHGetFileInfo( pattern, attributes, &info, sizeof( info ),
27 | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES );
28 |
29 | QPixmap icon;
30 |
31 | if ( list != 0 ) {
32 | icon = QtWin::fromHICON( info.hIcon );
33 | DestroyIcon( info.hIcon );
34 | }
35 |
36 | return icon;
37 | }
38 |
39 | class IconCacheGlobal
40 | {
41 | public:
42 | IconCacheGlobal();
43 | ~IconCacheGlobal();
44 |
45 | public:
46 | QPixmap m_fileIcon;
47 | QPixmap m_directoryIcon;
48 |
49 | QMap m_fileIcons;
50 | };
51 |
52 | Q_GLOBAL_STATIC( IconCacheGlobal, iconCacheGlobal )
53 |
54 | IconCacheGlobal::IconCacheGlobal()
55 | {
56 | m_fileIcon = loadIcon( L"*.*", FILE_ATTRIBUTE_NORMAL );
57 | m_directoryIcon = loadIcon( L"*.*", FILE_ATTRIBUTE_DIRECTORY );
58 | }
59 |
60 | IconCacheGlobal::~IconCacheGlobal()
61 | {
62 | }
63 |
64 | QPixmap IconCache::fileIcon()
65 | {
66 | return iconCacheGlobal()->m_fileIcon;
67 | }
68 |
69 | QPixmap IconCache::directoryIcon()
70 | {
71 | return iconCacheGlobal()->m_directoryIcon;
72 | }
73 |
74 | QPixmap IconCache::loadFileIcon( const QString& extension )
75 | {
76 | IconCacheGlobal* g = iconCacheGlobal();
77 |
78 | QMap::const_iterator it = g->m_fileIcons.find( extension );
79 | if ( it != g->m_fileIcons.end() )
80 | return it.value();
81 |
82 | QString pattern = "*." + extension;
83 |
84 | QPixmap icon = loadIcon( (LPCWSTR)pattern.utf16(), FILE_ATTRIBUTE_NORMAL );
85 |
86 | g->m_fileIcons.insert( extension, icon );
87 |
88 | return icon;
89 | }
90 |
--------------------------------------------------------------------------------
/src/shell/iconcache_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef ICONCACHE_P_H
20 | #define ICONCACHE_P_H
21 |
22 | #include
23 |
24 | class QPixmap;
25 | class QString;
26 |
27 | class IconCache
28 | {
29 | public:
30 | static QPixmap fileIcon();
31 | static QPixmap directoryIcon();
32 |
33 | static QPixmap loadFileIcon( const QString& extension );
34 | };
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/src/shell/shell.pri:
--------------------------------------------------------------------------------
1 | HEADERS += shell/changenotifywatcher_p.h \
2 | shell/iconcache_p.h \
3 | shell/shellbase_p.h \
4 | shell/shellcomputer.h \
5 | shell/shellcomputer_p.h \
6 | shell/shelldrive.h \
7 | shell/shelldrive_p.h \
8 | shell/shelldropdata.h \
9 | shell/shelldropdata_p.h \
10 | shell/shellfolder.h \
11 | shell/shellfolder_p.h \
12 | shell/shellitem.h \
13 | shell/shellitem_p.h \
14 | shell/shellpidl.h \
15 | shell/shellpidl_p.h \
16 | shell/shellselection.h \
17 | shell/shellselection_p.h \
18 | shell/streamdevice.h \
19 | shell/streamdevice_p.h
20 |
21 | SOURCES += shell/changenotifywatcher.cpp \
22 | shell/iconcache.cpp \
23 | shell/shellbase.cpp \
24 | shell/shellcomputer.cpp \
25 | shell/shelldrive.cpp \
26 | shell/shelldropdata.cpp \
27 | shell/shellfolder.cpp \
28 | shell/shellitem.cpp \
29 | shell/shellpidl.cpp \
30 | shell/shellselection.cpp \
31 | shell/streamdevice.cpp
32 |
--------------------------------------------------------------------------------
/src/shell/shellbase.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "shellbase_p.h"
20 |
21 | #include
22 |
23 | ShellBasePrivate::ShellBasePrivate() :
24 | m_pidl( NULL ),
25 | m_folder( NULL )
26 | {
27 | }
28 |
29 | ShellBasePrivate::~ShellBasePrivate()
30 | {
31 | if ( m_pidl ) {
32 | CoTaskMemFree( m_pidl );
33 | m_pidl = NULL;
34 | }
35 |
36 | if ( m_folder ) {
37 | m_folder->Release();
38 | m_folder = NULL;
39 | }
40 | }
41 |
42 | QString ShellBasePrivate::displayName( LPITEMIDLIST pidl, int flags )
43 | {
44 | QString result;
45 |
46 | STRRET strret;
47 | HRESULT hr = m_folder->GetDisplayNameOf( pidl, flags, &strret );
48 |
49 | if ( SUCCEEDED( hr ) ) {
50 | wchar_t buffer[ MAX_PATH ];
51 | hr = StrRetToBuf( &strret, pidl, buffer, MAX_PATH );
52 |
53 | if SUCCEEDED( hr )
54 | result = QString::fromUtf16( (const ushort*)buffer );
55 | }
56 |
57 | return result;
58 | }
59 |
60 | QPixmap ShellBasePrivate::extractIcon( LPITEMIDLIST pidl )
61 | {
62 | QPixmap result;
63 |
64 | LPITEMIDLIST absolutePidl = ILCombine( m_pidl, pidl );
65 |
66 | SHFILEINFO info;
67 | DWORD_PTR status = SHGetFileInfo( (LPCWSTR)absolutePidl, 0, &info, sizeof( info ),
68 | SHGFI_PIDL | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS );
69 |
70 | CoTaskMemFree( absolutePidl );
71 |
72 | if ( status ) {
73 | result = QtWin::fromHICON( info.hIcon );
74 | DestroyIcon( info.hIcon );
75 | }
76 |
77 | return result;
78 | }
79 |
--------------------------------------------------------------------------------
/src/shell/shellbase_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLBASE_P_H
20 | #define SHELLBASE_P_H
21 |
22 | #include
23 |
24 | class ShellBasePrivate
25 | {
26 | public:
27 | ShellBasePrivate();
28 | ~ShellBasePrivate();
29 |
30 | public:
31 | QString displayName( LPITEMIDLIST pidl, int flags );
32 | QPixmap extractIcon( LPITEMIDLIST pidl );
33 |
34 | public:
35 | LPITEMIDLIST m_pidl;
36 | IShellFolder* m_folder;
37 | };
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/src/shell/shellcomputer.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLCOMPUTER_H
20 | #define SHELLCOMPUTER_H
21 |
22 | #include "shelldrive.h"
23 | #include "shellselection.h"
24 |
25 | #include
26 |
27 | class ShellFolder;
28 | class ShellComputerPrivate;
29 |
30 | class ShellComputer : public QObject
31 | {
32 | Q_OBJECT
33 | public:
34 | explicit ShellComputer( QWidget* parent );
35 | ~ShellComputer();
36 |
37 | public:
38 | QList listDrives();
39 |
40 | ShellFolder* openRootFolder( const ShellDrive& drive );
41 |
42 | ShellSelection::MenuCommand showContextMenu( const ShellDrive& drive, const QPoint& pos, ShellSelection::Flags flags );
43 |
44 | bool startWatching();
45 |
46 | public: // overrides
47 | QWidget* parent() const { return qobject_cast( QObject::parent() ); }
48 |
49 | signals:
50 | void driveChanged( const ShellDrive& drive );
51 | void computerUpdated();
52 |
53 | private slots:
54 | void changeNotify( int eventType, void* arg1, void* arg2 );
55 |
56 | private:
57 | ShellComputerPrivate* d;
58 |
59 | friend class ShellDropData;
60 | };
61 |
62 | #endif
63 |
--------------------------------------------------------------------------------
/src/shell/shellcomputer_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLCOMPUTER_P_H
20 | #define SHELLCOMPUTER_P_H
21 |
22 | #include "shellbase_p.h"
23 |
24 | #include
25 |
26 | class ShellComputer;
27 | class ShellDrive;
28 |
29 | class ShellComputerPrivate : public ShellBasePrivate
30 | {
31 | public:
32 | ShellComputerPrivate();
33 | ~ShellComputerPrivate();
34 |
35 | public:
36 | ShellDrive makeDrive( LPITEMIDLIST pidl );
37 | ShellDrive makeRealNotifyDrive( LPITEMIDLIST pidl );
38 |
39 | bool readDriveProperties( ShellDrive& drive );
40 |
41 | public:
42 | ShellComputer* q;
43 | };
44 |
45 | #endif
46 |
--------------------------------------------------------------------------------
/src/shell/shelldrive.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "shelldrive.h"
20 | #include "shelldrive_p.h"
21 |
22 | ShellDrivePrivate::ShellDrivePrivate() :
23 | m_pidl( NULL )
24 | {
25 | }
26 |
27 | ShellDrivePrivate::ShellDrivePrivate( const ShellDrivePrivate& other ) : QSharedData( other ),
28 | m_pidl( ILClone( other.m_pidl ) )
29 | {
30 | }
31 |
32 | ShellDrivePrivate::~ShellDrivePrivate()
33 | {
34 | if ( m_pidl ) {
35 | CoTaskMemFree( m_pidl );
36 | m_pidl = NULL;
37 | }
38 | }
39 |
40 | ShellDrive::ShellDrive() :
41 | d( new ShellDrivePrivate() )
42 | {
43 | }
44 |
45 | ShellDrive::~ShellDrive()
46 | {
47 | }
48 |
49 | ShellDrive::ShellDrive( const ShellDrive& other ) :
50 | d( other.d )
51 | {
52 | }
53 |
54 | ShellDrive& ShellDrive::operator =( const ShellDrive& other )
55 | {
56 | d = other.d;
57 | return *this;
58 | }
59 |
60 | bool ShellDrive::isValid() const
61 | {
62 | return d->m_pidl != NULL;
63 | }
64 |
65 | char ShellDrive::letter() const
66 | {
67 | return d->m_letter;
68 | }
69 |
70 | QString ShellDrive::name() const
71 | {
72 | return d->m_name;
73 | }
74 |
75 | QPixmap ShellDrive::icon() const
76 | {
77 | return d->m_icon;
78 | }
79 |
80 | bool ShellDrive::getFreeSpace( qint64* free, qint64* total ) const
81 | {
82 | QString path = QLatin1Char( d->m_letter ) + QLatin1String( ":\\" );
83 |
84 | ULARGE_INTEGER freeBytes;
85 | ULARGE_INTEGER totalBytes;
86 |
87 | if ( GetDiskFreeSpaceEx( (LPCWSTR)path.utf16(), &freeBytes, &totalBytes, NULL ) )
88 | {
89 | *free = freeBytes.QuadPart;
90 | *total = totalBytes.QuadPart;
91 | return true;
92 | }
93 |
94 | return false;
95 | }
96 |
97 | bool operator ==( const ShellDrive& lhs, const ShellDrive& rhs )
98 | {
99 | return ILIsEqual( lhs.d->m_pidl, rhs.d->m_pidl );
100 | }
101 |
102 | bool operator !=( const ShellDrive& lhs, const ShellDrive& rhs )
103 | {
104 | return !( lhs == rhs );
105 | }
106 |
--------------------------------------------------------------------------------
/src/shell/shelldrive.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLDRIVE_H
20 | #define SHELLDRIVE_H
21 |
22 | #include
23 |
24 | class ShellDrivePrivate;
25 |
26 | class ShellDrive
27 | {
28 | public:
29 | ShellDrive();
30 | ~ShellDrive();
31 |
32 | ShellDrive( const ShellDrive& other );
33 | ShellDrive& operator =( const ShellDrive& other );
34 |
35 | public:
36 | bool isValid() const;
37 |
38 | char letter() const;
39 | QString name() const;
40 | QPixmap icon() const;
41 |
42 | bool getFreeSpace( qint64* free, qint64* total ) const;
43 |
44 | public:
45 | friend bool operator ==( const ShellDrive& lhs, const ShellDrive& rhs );
46 | friend bool operator !=( const ShellDrive& lhs, const ShellDrive& rhs );
47 |
48 | private:
49 | QSharedDataPointer d;
50 |
51 | friend class ShellComputer;
52 | friend class ShellComputerPrivate;
53 | friend class ShellDropData;
54 | };
55 |
56 | Q_DECLARE_TYPEINFO( ShellDrive, Q_MOVABLE_TYPE );
57 |
58 | #endif
59 |
--------------------------------------------------------------------------------
/src/shell/shelldrive_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLDRIVE_P_H
20 | #define SHELLDRIVE_P_H
21 |
22 | #include "shelldrive.h"
23 |
24 | #include
25 |
26 | class ShellDrivePrivate : public QSharedData
27 | {
28 | public:
29 | ShellDrivePrivate();
30 | ShellDrivePrivate( const ShellDrivePrivate& other );
31 | ~ShellDrivePrivate();
32 |
33 | public:
34 | LPITEMIDLIST m_pidl;
35 |
36 | char m_letter;
37 | QString m_name;
38 | QPixmap m_icon;
39 | };
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/src/shell/shelldropdata.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLDROPDATA_H
20 | #define SHELLDROPDATA_H
21 |
22 | #include
23 |
24 | class ShellDropDataPrivate;
25 | class ShellFolder;
26 | class ShellComputer;
27 | class ShellItem;
28 | class ShellDrive;
29 |
30 | class ShellDropData : public QObject
31 | {
32 | Q_OBJECT
33 | public:
34 | ShellDropData( QDropEvent* e, ShellFolder* folder, QWidget* parent );
35 | ShellDropData( QDropEvent* e, ShellComputer* computer, QWidget* parent );
36 | ~ShellDropData();
37 |
38 | public:
39 | bool isValid() const;
40 |
41 | Qt::DropAction dropAction() const;
42 |
43 | bool dragToFolder( QDropEvent* e );
44 | bool dragToParent( QDropEvent* e );
45 | bool dragToItem( QDropEvent* e, const ShellItem& item );
46 | bool dragToDrive( QDropEvent* e, const ShellDrive& drive );
47 |
48 | bool drop();
49 |
50 | public:
51 | static void registerDropTarget( QWindow* window );
52 | static void unregisterDropTarget( QWindow* window );
53 |
54 | public: // overrides
55 | QWidget* parent() const { return qobject_cast( QObject::parent() ); }
56 |
57 | private:
58 | ShellDropDataPrivate* d;
59 |
60 | friend class ShellSelection;
61 | };
62 |
63 | #endif
64 |
--------------------------------------------------------------------------------
/src/shell/shelldropdata_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLDROPDATA_P_H
20 | #define SHELLDROPDATA_P_H
21 |
22 | #include "shelldropdata.h"
23 | #include "shellitem.h"
24 | #include "shelldrive.h"
25 |
26 | class WindowDropTarget;
27 |
28 | class ShellDropDataPrivate
29 | {
30 | public:
31 | enum Target
32 | {
33 | NoTarget,
34 | FolderTarget,
35 | ParentTarget,
36 | ItemTarget,
37 | DriveTarget
38 | };
39 |
40 | public:
41 | ShellDropDataPrivate();
42 | ~ShellDropDataPrivate();
43 |
44 | public:
45 | bool dragOver( QDropEvent* e );
46 |
47 | void dragLeave();
48 |
49 | public:
50 | ShellDropData* q;
51 |
52 | IDataObject* m_dataObject;
53 |
54 | Target m_target;
55 |
56 | ShellFolder* m_folder;
57 | ShellComputer* m_computer;
58 |
59 | ShellItem m_item;
60 | ShellDrive m_drive;
61 |
62 | bool m_ignoreItem;
63 |
64 | IDropTarget* m_dropTarget;
65 | LPITEMIDLIST m_targetPidl;
66 |
67 | POINTL m_point;
68 | DWORD m_keyState;
69 | DWORD m_possibleEffect;
70 |
71 | bool m_dragEntered;
72 | Qt::DropAction m_dropAction;
73 |
74 | static WindowDropTarget* m_windowDropTarget;
75 |
76 | static IDataObject* m_dropDataObject;
77 | static QMimeData* m_dropMimeData;
78 | };
79 |
80 | #endif
81 |
--------------------------------------------------------------------------------
/src/shell/shellfolder_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLFOLDER_P_H
20 | #define SHELLFOLDER_P_H
21 |
22 | #include "shellbase_p.h"
23 |
24 | #include
25 |
26 | class ShellFolder;
27 |
28 | class ShellFolderPrivate : public ShellBasePrivate
29 | {
30 | public:
31 | ShellFolderPrivate();
32 | ~ShellFolderPrivate();
33 |
34 | public:
35 | void readProperties();
36 |
37 | ShellItem makeItem( LPITEMIDLIST pidl );
38 | ShellItem makeNotifyItem( LPITEMIDLIST pidl );
39 | ShellItem makeRealNotifyItem( LPITEMIDLIST pidl );
40 |
41 | void readItemProperties( ShellItem& item );
42 |
43 | ShellFolder* createParentFolder( ShellItem& item );
44 |
45 | qint64 calculateSize( IShellFolder* parentFolder, LPITEMIDLIST pidl );
46 |
47 | public:
48 | ShellFolder* q;
49 |
50 | QString m_path;
51 |
52 | QString m_user;
53 | QString m_password;
54 |
55 | bool m_hasParent;
56 | };
57 |
58 | #endif
59 |
--------------------------------------------------------------------------------
/src/shell/shellitem.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLITEM_H
20 | #define SHELLITEM_H
21 |
22 | #include
23 |
24 | class ShellItemPrivate;
25 |
26 | class ShellItem
27 | {
28 | public:
29 | enum Attribute
30 | {
31 | // shell attributes
32 | Folder = 1,
33 | Stream = 2,
34 | FileSystem = 4,
35 | CanRename = 8,
36 | // file system attributes
37 | ReadOnly = 0x100,
38 | Hidden = 0x200,
39 | System = 0x400,
40 | Directory = 0x800,
41 | Archive = 0x1000,
42 | Compressed = 0x2000,
43 | Encrypted = 0x4000,
44 | ReparsePoint = 0x8000,
45 | };
46 | Q_DECLARE_FLAGS( Attributes, Attribute );
47 |
48 | enum StateFlag
49 | {
50 | HasProperties = 1,
51 | HasExtractedIcon = 2,
52 | HasCalculatedSize = 4,
53 | IsSelected = 8
54 | };
55 | Q_DECLARE_FLAGS( State, StateFlag );
56 |
57 | public:
58 | ShellItem();
59 | ~ShellItem();
60 |
61 | ShellItem( const ShellItem& other );
62 | ShellItem& operator =( const ShellItem& other );
63 |
64 | public:
65 | bool isValid() const;
66 |
67 | QString name() const;
68 | qint64 size() const;
69 | QDateTime lastModified() const;
70 | QPixmap icon() const;
71 |
72 | Attributes attributes() const;
73 | State state() const;
74 |
75 | void setSelected( bool selected );
76 | bool isSelected() const;
77 |
78 | public:
79 | friend bool operator ==( const ShellItem& lhs, const ShellItem& rhs );
80 | friend bool operator !=( const ShellItem& lhs, const ShellItem& rhs );
81 |
82 | private:
83 | QSharedDataPointer d;
84 |
85 | friend class ShellFolder;
86 | friend class ShellFolderPrivate;
87 | friend class ShellSelection;
88 | friend class ShellSelectionPrivate;
89 | friend class ShellComputer;
90 | friend class ShellDropData;
91 | };
92 |
93 | Q_DECLARE_OPERATORS_FOR_FLAGS( ShellItem::Attributes )
94 | Q_DECLARE_OPERATORS_FOR_FLAGS( ShellItem::State )
95 |
96 | Q_DECLARE_TYPEINFO( ShellItem, Q_MOVABLE_TYPE );
97 |
98 | #endif
99 |
--------------------------------------------------------------------------------
/src/shell/shellitem_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLITEM_P_H
20 | #define SHELLITEM_P_H
21 |
22 | #include "shellitem.h"
23 |
24 | #include
25 |
26 | class ShellItemPrivate : public QSharedData
27 | {
28 | public:
29 | ShellItemPrivate();
30 | ShellItemPrivate( const ShellItemPrivate& other );
31 | ~ShellItemPrivate();
32 |
33 | public:
34 | LPITEMIDLIST m_pidl;
35 |
36 | QString m_name;
37 | qint64 m_size;
38 | QDateTime m_modified;
39 | QPixmap m_icon;
40 |
41 | ShellItem::Attributes m_attributes;
42 | ShellItem::State m_state;
43 | };
44 |
45 | #endif
46 |
--------------------------------------------------------------------------------
/src/shell/shellpidl.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "shellpidl.h"
20 | #include "shellpidl_p.h"
21 |
22 | ShellPidlPrivate::ShellPidlPrivate() :
23 | m_attributes( 0 )
24 | {
25 | }
26 |
27 | ShellPidlPrivate::ShellPidlPrivate( const ShellPidlPrivate& other ) : QSharedData( other ),
28 | m_data( other.m_data ),
29 | m_path( other.m_path ),
30 | m_attributes( other.m_attributes )
31 | {
32 | }
33 |
34 | ShellPidlPrivate::~ShellPidlPrivate()
35 | {
36 | }
37 |
38 | ShellPidl::ShellPidl() :
39 | d( new ShellPidlPrivate() )
40 | {
41 | }
42 |
43 | ShellPidl::~ShellPidl()
44 | {
45 | }
46 |
47 | ShellPidl::ShellPidl( const ShellPidl& other ) :
48 | d( other.d )
49 | {
50 | }
51 |
52 | ShellPidl& ShellPidl::operator =( const ShellPidl& other )
53 | {
54 | d = other.d;
55 | return *this;
56 | }
57 |
58 | bool ShellPidl::isValid() const
59 | {
60 | return !d->m_data.isEmpty();
61 | }
62 |
63 | QString ShellPidl::path() const
64 | {
65 | return d->m_path;
66 | }
67 |
68 | ShellItem::Attributes ShellPidl::attributes() const
69 | {
70 | return d->m_attributes;
71 | }
72 |
73 | bool operator ==( const ShellPidl& lhs, const ShellPidl& rhs )
74 | {
75 | return ILIsEqual( lhs.d->pidl(), rhs.d->pidl() );
76 | }
77 |
78 | bool operator !=( const ShellPidl& lhs, const ShellPidl& rhs )
79 | {
80 | return !( lhs == rhs );
81 | }
82 |
83 | QDataStream& operator <<( QDataStream& stream, const ShellPidl& pidl )
84 | {
85 | return stream << pidl.d->m_data << pidl.d->m_path;
86 | }
87 |
88 | QDataStream& operator >>( QDataStream& stream, ShellPidl& pidl )
89 | {
90 | return stream >> pidl.d->m_data >> pidl.d->m_path;
91 | }
92 |
93 | void ShellPidl::registerMetaType()
94 | {
95 | qRegisterMetaTypeStreamOperators( "ShellPidl" );
96 | }
97 |
--------------------------------------------------------------------------------
/src/shell/shellpidl.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLPIDL_H
20 | #define SHELLPIDL_H
21 |
22 | #include
23 |
24 | #include "shellitem.h"
25 |
26 | class ShellPidlPrivate;
27 |
28 | class ShellPidl
29 | {
30 | public:
31 | ShellPidl();
32 | ~ShellPidl();
33 |
34 | ShellPidl( const ShellPidl& other );
35 | ShellPidl& operator =( const ShellPidl& other );
36 |
37 | public:
38 | bool isValid() const;
39 |
40 | QString path() const;
41 |
42 | ShellItem::Attributes attributes() const;
43 |
44 | public:
45 | static void registerMetaType();
46 |
47 | public:
48 | friend bool operator ==( const ShellPidl& lhs, const ShellPidl& rhs );
49 | friend bool operator !=( const ShellPidl& lhs, const ShellPidl& rhs );
50 |
51 | friend QDataStream& operator <<( QDataStream& stream, const ShellPidl& pidl );
52 | friend QDataStream& operator >>( QDataStream& stream, ShellPidl& pidl );
53 |
54 | private:
55 | QSharedDataPointer d;
56 |
57 | friend class ShellFolder;
58 | friend class StreamDevice;
59 | };
60 |
61 | Q_DECLARE_METATYPE( ShellPidl )
62 |
63 | Q_DECLARE_TYPEINFO( ShellPidl, Q_MOVABLE_TYPE );
64 |
65 | #endif
66 |
--------------------------------------------------------------------------------
/src/shell/shellpidl_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLPIDL_P_H
20 | #define SHELLPIDL_P_H
21 |
22 | #include "shellpidl.h"
23 |
24 | #include
25 |
26 | class ShellPidlPrivate : public QSharedData
27 | {
28 | public:
29 | ShellPidlPrivate();
30 | ShellPidlPrivate( const ShellPidlPrivate& other );
31 | ~ShellPidlPrivate();
32 |
33 | public:
34 | LPCITEMIDLIST pidl() const { return (LPCITEMIDLIST)m_data.data(); }
35 |
36 | public:
37 | QByteArray m_data;
38 | QString m_path;
39 | ShellItem::Attributes m_attributes;
40 | };
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/src/shell/shellselection.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLSELECTION_H
20 | #define SHELLSELECTION_H
21 |
22 | #include
23 |
24 | class ShellFolder;
25 | class ShellItem;
26 | class ShellDropData;
27 | class ShellSelectionPrivate;
28 |
29 | class ShellSelection : public QObject
30 | {
31 | Q_OBJECT
32 | public:
33 | enum TransferType
34 | {
35 | Copy,
36 | Move
37 | };
38 |
39 | enum Flag
40 | {
41 | ForceOverwrite = 1,
42 | ForceDelete = 2,
43 | DeletePermanently = 4,
44 | CanOpen = 8,
45 | CanRename = 16,
46 | };
47 | Q_DECLARE_FLAGS( Flags, Flag );
48 |
49 | enum MenuCommand
50 | {
51 | NoCommand,
52 | InternalCommand,
53 | Open,
54 | Rename
55 | };
56 |
57 | public:
58 | ShellSelection( ShellFolder* folder, const QList& items, QWidget* parent );
59 | ~ShellSelection();
60 |
61 | public:
62 | ShellFolder* folder() const;
63 | QList items() const;
64 |
65 | bool canTransferTo( ShellFolder* targetFolder, TransferType type );
66 | bool transferTo( ShellFolder* targetFolder, TransferType type, Flags flags, QStringList newNames );
67 |
68 | bool canDragDropTo( ShellFolder* targetFolder, TransferType type );
69 | bool dragDropTo( ShellFolder* targetFolder, TransferType type );
70 |
71 | bool canDelete();
72 | bool deleteSelection( Flags flags );
73 |
74 | MenuCommand showContextMenu( const QPoint& pos, Flags flags );
75 |
76 | bool invokeCommand( const char* verb );
77 |
78 | bool doDragDrop();
79 |
80 | static ShellSelection* draggedSelection( ShellDropData* data );
81 |
82 | public: // overrides
83 | QWidget* parent() const { return qobject_cast( QObject::parent() ); }
84 |
85 | private:
86 | ShellSelectionPrivate* d;
87 | };
88 |
89 | Q_DECLARE_OPERATORS_FOR_FLAGS( ShellSelection::Flags )
90 |
91 | #endif
92 |
--------------------------------------------------------------------------------
/src/shell/shellselection_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SHELLSELECTION_P_H
20 | #define SHELLSELECTION_P_H
21 |
22 | #include
23 |
24 | class ShellSelectionPrivate
25 | {
26 | public:
27 | ShellSelectionPrivate();
28 | ~ShellSelectionPrivate();
29 |
30 | public:
31 | bool dragDropHelper( ShellFolder* targetFolder, ShellSelection::TransferType type, bool doDrop );
32 |
33 | public:
34 | ShellSelection* q;
35 |
36 | ShellFolder* m_sourceFolder;
37 | QList m_sourceItems;
38 |
39 | static ShellSelection* m_dragSelection;
40 | static IDataObject* m_dragObject;
41 | };
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/src/shell/streamdevice.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef STREAMDEVICE_H
20 | #define STREAMDEVICE_H
21 |
22 | #include
23 |
24 | class StreamDevicePrivate;
25 | class ShellPidl;
26 |
27 | class StreamDevice : public QIODevice
28 | {
29 | Q_OBJECT
30 | public:
31 | explicit StreamDevice( const ShellPidl& pidl );
32 | ~StreamDevice();
33 |
34 | public:
35 | QString name() const;
36 |
37 | public: // overrides
38 | bool open( OpenMode mode );
39 |
40 | qint64 size() const;
41 | bool seek( qint64 pos );
42 |
43 | QDateTime lastModified() const;
44 |
45 | protected: // overrides
46 | qint64 readData( char* data, qint64 maxSize );
47 | qint64 writeData( const char* data, qint64 maxSize );
48 |
49 | private:
50 | StreamDevicePrivate* d;
51 | };
52 |
53 | #endif
54 |
--------------------------------------------------------------------------------
/src/shell/streamdevice_p.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef STREAMDEVICE_P_H
20 | #define STREAMDEVICE_P_H
21 |
22 | #include "streamdevice.h"
23 | #include "shellpidl.h"
24 |
25 | class StreamDevicePrivate
26 | {
27 | public:
28 | StreamDevicePrivate();
29 | ~StreamDevicePrivate();
30 |
31 | public:
32 | StreamDevice* q;
33 |
34 | ShellPidl m_pidl;
35 |
36 | IStream* m_stream;
37 | };
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/src/src.pro:
--------------------------------------------------------------------------------
1 | include( ../config.pri )
2 |
3 | TEMPLATE = app
4 | TARGET = saladin
5 |
6 | CONFIG += qt
7 | QT = core-private gui-private widgets-private network xml winextras
8 |
9 | HEADERS += aboutbox.h \
10 | application.h \
11 | bookmark.h \
12 | bookmark_p.h \
13 | bookmarksdialog.h \
14 | drivestripmanager.h \
15 | findbar.h \
16 | folderitemdelegate.h \
17 | folderitemmodel.h \
18 | folderitemview.h \
19 | guidedialog.h \
20 | mainwindow.h \
21 | multirenamewidget.h \
22 | openftpdialog.h \
23 | operationdialog.h \
24 | panewidget.h \
25 | searchdialog.h \
26 | searchhelper.h \
27 | searchitemmodel.h \
28 | settingsdialog.h
29 |
30 | SOURCES += aboutbox.cpp \
31 | application.cpp \
32 | bookmark.cpp \
33 | bookmarksdialog.cpp \
34 | drivestripmanager.cpp \
35 | findbar.cpp \
36 | folderitemdelegate.cpp \
37 | folderitemmodel.cpp \
38 | folderitemview.cpp \
39 | guidedialog.cpp \
40 | main.cpp \
41 | mainwindow.cpp \
42 | multirenamewidget.cpp \
43 | openftpdialog.cpp \
44 | operationdialog.cpp \
45 | panewidget.cpp \
46 | searchdialog.cpp \
47 | searchhelper.cpp \
48 | searchitemmodel.cpp \
49 | settingsdialog.cpp
50 |
51 | RESOURCES += \
52 | guide/guide.qrc \
53 | icons/icons.qrc \
54 | icons/dark/dark.qrc \
55 | resources/resources.qrc
56 |
57 | include( shell/shell.pri )
58 | include( utils/utils.pri )
59 | include( viewer/viewer.pri )
60 | include( xmlui/xmlui.pri )
61 |
62 | INCLUDEPATH += .
63 |
64 | PRECOMPILED_HEADER = precompiled.h
65 |
66 | TRANSLATIONS += \
67 | ../translations/saladin_untranslated.ts \
68 | ../translations/saladin_de.ts \
69 | ../translations/saladin_es.ts \
70 | ../translations/saladin_pl.ts \
71 | ../translations/saladin_pt_BR.ts
72 |
73 | RC_FILE = saladin.rc
74 | LIBS += -lshell32 -lshlwapi -lcrypt32 -lole32 -loleaut32
75 |
76 | win32-msvc* {
77 | QMAKE_CXXFLAGS += -Fd\$(IntDir)
78 | CONFIG -= flat
79 | }
80 |
81 | build_pass {
82 | MOC_DIR = ../tmp
83 | RCC_DIR = ../tmp
84 | UI_DIR = ../tmp
85 | CONFIG( debug, debug|release ) {
86 | OBJECTS_DIR = ../tmp/debug
87 | DESTDIR = ../debug
88 | } else {
89 | OBJECTS_DIR = ../tmp/release
90 | DESTDIR = ../release
91 | }
92 | }
93 |
94 | target.path = $${DESTINATION}$$PREFIX/bin
95 | INSTALLS += target
96 |
--------------------------------------------------------------------------------
/src/utils/dataserializer.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "dataserializer.h"
20 |
21 | int DataSerializer::m_dataVersion = 0;
22 |
23 | static const int MagicHeader = 0x534CC4D3;
24 |
25 | // increment this value every time data format is changed
26 | static const int CurrentVersion = 1;
27 |
28 | // minimum supported version
29 | static const int MinimumVersion = 1;
30 |
31 | DataSerializer::DataSerializer( const QString& path ) :
32 | m_file( path )
33 | {
34 | }
35 |
36 | DataSerializer::~DataSerializer()
37 | {
38 | }
39 |
40 | bool DataSerializer::openForReading()
41 | {
42 | if ( !m_file.open( QIODevice::ReadOnly ) )
43 | return false;
44 |
45 | m_stream.setDevice( &m_file );
46 | m_stream.setVersion( QDataStream::Qt_4_4 );
47 |
48 | qint32 header;
49 | m_stream >> header;
50 |
51 | if ( header != MagicHeader )
52 | return false;
53 |
54 | qint32 version;
55 | m_stream >> version;
56 |
57 | if ( version < MinimumVersion || version > CurrentVersion )
58 | return false;
59 |
60 | m_dataVersion = version;
61 |
62 | return true;
63 | }
64 |
65 | bool DataSerializer::openForWriting()
66 | {
67 | if ( !m_file.open( QIODevice::WriteOnly | QIODevice::Truncate ) )
68 | return false;
69 |
70 | m_stream.setDevice( &m_file );
71 | m_stream.setVersion( QDataStream::Qt_4_4 );
72 |
73 | m_stream << (qint32)MagicHeader;
74 | m_stream << (qint32)CurrentVersion;
75 |
76 | m_dataVersion = CurrentVersion;
77 |
78 | return true;
79 | }
80 |
--------------------------------------------------------------------------------
/src/utils/dataserializer.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef DATASERIALIZER_H
20 | #define DATASERIALIZER_H
21 |
22 | #include
23 | #include
24 |
25 | class DataSerializer
26 | {
27 | public:
28 | DataSerializer( const QString& path );
29 | ~DataSerializer();
30 |
31 | public:
32 | bool openForReading();
33 | bool openForWriting();
34 |
35 | QDataStream& stream() { return m_stream; }
36 |
37 | static int dataVersion() { return m_dataVersion; }
38 |
39 | private:
40 | QFile m_file;
41 | QDataStream m_stream;
42 |
43 | static int m_dataVersion;
44 | };
45 |
46 | #endif
47 |
--------------------------------------------------------------------------------
/src/utils/elidedlabel.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "elidedlabel.h"
20 |
21 | #include
22 | #include
23 | #include
24 | #include
25 |
26 | ElidedLabel::ElidedLabel( QWidget* parent ) : QLabel( parent ),
27 | m_lastWidth( 0 )
28 | {
29 | setMinimumWidth( fontMetrics().width( "..." ) );
30 | }
31 |
32 | ElidedLabel::~ElidedLabel()
33 | {
34 | }
35 |
36 | void ElidedLabel::paintEvent( QPaintEvent* /*e*/ )
37 | {
38 | QPainter painter( this );
39 | drawFrame( &painter );
40 |
41 | QRect cr = contentsRect();
42 | cr.adjust( margin(), margin(), -margin(), -margin() );
43 |
44 | QString fullText = text();
45 |
46 | if ( fullText != m_lastText || cr.width() != m_lastWidth ) {
47 | m_elidedText = fontMetrics().elidedText( fullText, Qt::ElideRight, cr.width() );
48 | m_lastText = fullText;
49 | m_lastWidth = cr.width();
50 | }
51 |
52 | QStyleOption opt;
53 | opt.initFrom( this );
54 |
55 | style()->drawItemText( &painter, cr, alignment(), opt.palette, isEnabled(), m_elidedText, foregroundRole() );
56 | }
57 |
--------------------------------------------------------------------------------
/src/utils/elidedlabel.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef ELIDEDLABEL_H
20 | #define ELIDEDLABEL_H
21 |
22 | #include
23 |
24 | class ElidedLabel : public QLabel
25 | {
26 | Q_OBJECT
27 | public:
28 | ElidedLabel( QWidget* parent );
29 | ~ElidedLabel();
30 |
31 | protected: // overrides
32 | void paintEvent( QPaintEvent* e );
33 |
34 | private:
35 | QString m_elidedText;
36 | QString m_lastText;
37 | int m_lastWidth;
38 | };
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/src/utils/formathelper.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef FORMATHELPER_H
20 | #define FORMATHELPER_H
21 |
22 | class StreamDevice;
23 |
24 | class FormatHelper
25 | {
26 | public:
27 | static bool checkImage( StreamDevice& file, bool force, QByteArray& format );
28 |
29 | static bool checkText( QIODevice& file, bool force, QByteArray& format );
30 | };
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/src/utils/iconloader.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef ICONLOADER_H
20 | #define ICONLOADER_H
21 |
22 | #include
23 | #include
24 |
25 | class IconLoader
26 | {
27 | public:
28 | static QPixmap pixmap( const QString& name, int size = 16 );
29 |
30 | static QPixmap overlayedPixmap( const QString& name, const QString& overlay, int size = 16 );
31 | static QPixmap overlayedPixmap( const QString& name, const QString& overlay1, const QString& overlay2, int size = 16 );
32 |
33 | static QIcon icon( const QString& name );
34 |
35 | static QIcon overlayedIcon( const QString& name, const QString& overlay );
36 | };
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/src/utils/localsettings.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "localsettings.h"
20 | #include "dataserializer.h"
21 |
22 | LocalSettings::LocalSettings( const QString& path, QObject* parent ) : QObject( parent ),
23 | m_path( path )
24 | {
25 | load();
26 | }
27 |
28 | LocalSettings::~LocalSettings()
29 | {
30 | save();
31 | }
32 |
33 | bool LocalSettings::contains( const QString& key ) const
34 | {
35 | return m_data.contains( key );
36 | }
37 |
38 | void LocalSettings::setValue( const QString& key, const QVariant& value )
39 | {
40 | m_data.insert( key, value );
41 | }
42 |
43 | QVariant LocalSettings::value( const QString& key, const QVariant& defaultValue /*= QVariant()*/ ) const
44 | {
45 | return m_data.value( key, defaultValue );
46 | }
47 |
48 | void LocalSettings::load()
49 | {
50 | DataSerializer serializer( m_path );
51 |
52 | if ( !serializer.openForReading() )
53 | return;
54 |
55 | serializer.stream() >> m_data;
56 | }
57 |
58 | void LocalSettings::save()
59 | {
60 | DataSerializer serializer( m_path );
61 |
62 | if ( !serializer.openForWriting() )
63 | return;
64 |
65 | serializer.stream() << m_data;
66 |
67 | emit settingsChanged();
68 | }
69 |
--------------------------------------------------------------------------------
/src/utils/localsettings.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef LOCALSETTINGS_H
20 | #define LOCALSETTINGS_H
21 |
22 | #include
23 |
24 | class LocalSettings : public QObject
25 | {
26 | Q_OBJECT
27 | public:
28 | LocalSettings( const QString& path, QObject* parent );
29 | ~LocalSettings();
30 |
31 | public:
32 | bool contains( const QString& key ) const;
33 |
34 | void setValue( const QString& key, const QVariant& value );
35 | QVariant value( const QString& key, const QVariant& defaultValue = QVariant() ) const;
36 |
37 | void load();
38 | void save();
39 |
40 | signals:
41 | void settingsChanged();
42 |
43 | private:
44 | QString m_path;
45 |
46 | QVariantMap m_data;
47 | };
48 |
49 | #endif
50 |
--------------------------------------------------------------------------------
/src/utils/separatorcombobox.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef SEPARATORCOMBOBOX_H
20 | #define SEPARATORCOMBOBOX_H
21 |
22 | #include
23 |
24 | class SeparatorComboBox : public QComboBox
25 | {
26 | Q_OBJECT
27 | public:
28 | SeparatorComboBox( QWidget* parent );
29 | ~SeparatorComboBox();
30 |
31 | public:
32 | void addSeparator();
33 |
34 | void addParentItem( const QString& text );
35 | void addChildItem( const QString& text, const QVariant& data = QVariant() );
36 | };
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/src/utils/updateclient.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef UPDATECLIENT_H
20 | #define UPDATECLIENT_H
21 |
22 | #include
23 |
24 | class UpdateClient : public QObject
25 | {
26 | Q_OBJECT
27 | public:
28 | enum State {
29 | ErrorState,
30 | CheckingState,
31 | CurrentVersionState,
32 | UpdateAvailableState
33 | };
34 |
35 | public:
36 | UpdateClient( const QString& application, const QString& version, QNetworkAccessManager* manager );
37 | ~UpdateClient();
38 |
39 | public:
40 | void setAutoUpdate( bool enabled );
41 | bool autoUpdate() const { return m_timer != NULL; }
42 |
43 | State state() const { return m_state; }
44 |
45 | const QString& updateVersion() const { return m_updateVersion; }
46 |
47 | const QUrl& notesUrl() const { return m_notesUrl; }
48 | const QUrl& downloadUrl() const { return m_downloadUrl; }
49 |
50 | public slots:
51 | void checkUpdate();
52 |
53 | signals:
54 | void stateChanged();
55 |
56 | private slots:
57 | void finished( QNetworkReply* reply );
58 |
59 | private:
60 | QNetworkAccessManager* m_manager;
61 | QNetworkReply* m_currentReply;
62 |
63 | QTimer* m_timer;
64 |
65 | QString m_application;
66 | QString m_version;
67 |
68 | State m_state;
69 |
70 | QString m_updateVersion;
71 | QUrl m_notesUrl;
72 | QUrl m_downloadUrl;
73 | };
74 |
75 | #endif
76 |
--------------------------------------------------------------------------------
/src/utils/utils.pri:
--------------------------------------------------------------------------------
1 | HEADERS += utils/dataserializer.h \
2 | utils/elidedlabel.h \
3 | utils/formathelper.h \
4 | utils/iconloader.h \
5 | utils/localsettings.h \
6 | utils/separatorcombobox.h \
7 | utils/updateclient.h
8 |
9 | SOURCES += utils/dataserializer.cpp \
10 | utils/elidedlabel.cpp \
11 | utils/formathelper.cpp \
12 | utils/iconloader.cpp \
13 | utils/localsettings.cpp \
14 | utils/separatorcombobox.cpp \
15 | utils/updateclient.cpp
16 |
--------------------------------------------------------------------------------
/src/viewer/binaryloader.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef BINARYLOADER_H
20 | #define BINARYLOADER_H
21 |
22 | #include "shell/shellpidl.h"
23 |
24 | #include
25 |
26 | class BinaryLoader : public QThread
27 | {
28 | Q_OBJECT
29 | public:
30 | BinaryLoader( const ShellPidl& pidl, bool hexMode );
31 | ~BinaryLoader();
32 |
33 | public:
34 | QString nextBlock();
35 |
36 | bool atEnd() const { return m_atEnd; }
37 |
38 | qint64 size() const { return m_size; }
39 |
40 | qint64 estimatedLength() const { return m_estimatedLength; }
41 |
42 | void abort();
43 |
44 | signals:
45 | void nextBlockAvailable();
46 |
47 | protected: // overrides
48 | void run();
49 |
50 | private:
51 | ShellPidl m_pidl;
52 | bool m_hexMode;
53 |
54 | QMutex m_mutex;
55 |
56 | QQueue m_queue;
57 |
58 | bool m_aborted;
59 | bool m_signal;
60 |
61 | bool m_atEnd;
62 | qint64 m_size;
63 | qint64 m_estimatedLength;
64 | };
65 |
66 | #endif
67 |
--------------------------------------------------------------------------------
/src/viewer/binaryview.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef BINARYVIEW_H
20 | #define BINARYVIEW_H
21 |
22 | #include "viewer/view.h"
23 |
24 | class TextEdit;
25 | class BinaryLoader;
26 |
27 | class BinaryView : public View
28 | {
29 | Q_OBJECT
30 | public:
31 | BinaryView( QObject* parent, QWidget* parentWidget );
32 | ~BinaryView();
33 |
34 | public: // overrides
35 | Type type() const;
36 |
37 | void load();
38 |
39 | void storeSettings();
40 |
41 | private slots:
42 | void updateActions();
43 |
44 | void copy();
45 | void selectAll();
46 |
47 | void toggleHexMode();
48 |
49 | void contextMenuRequested( const QPoint& pos );
50 |
51 | void loadNextBlock();
52 |
53 | void settingsChanged();
54 |
55 | void loadIcons();
56 |
57 | private:
58 | void initializeSettings();
59 |
60 | private:
61 | TextEdit* m_edit;
62 |
63 | BinaryLoader* m_loader;
64 |
65 | qint64 m_length;
66 |
67 | bool m_hexMode;
68 | };
69 |
70 | #endif
71 |
--------------------------------------------------------------------------------
/src/viewer/gotodialog.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef GOTODIALOG_H
20 | #define GOTODIALOG_H
21 |
22 | #include
23 |
24 |
25 | class GoToDialog : public QDialog
26 | {
27 | Q_OBJECT
28 | public:
29 | GoToDialog( int lines, int current, QWidget* parent );
30 | ~GoToDialog();
31 |
32 | public:
33 | int line() const;
34 |
35 | private:
36 | QSpinBox* m_spinBox;
37 | };
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/src/viewer/imagelabel.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef IMAGELABEL_H
20 | #define IMAGELABEL_H
21 |
22 | class ImageLabel : public QWidget
23 | {
24 | Q_OBJECT
25 | public:
26 | ImageLabel( QWidget* parent );
27 | ~ImageLabel();
28 |
29 | public:
30 | void setImage( const QImage& image );
31 | const QImage& image() const { return m_image; }
32 |
33 | void setZoom( double zoom );
34 | double zoom() const { return m_zoom; }
35 |
36 | void setBlackBackground( bool black );
37 | bool isBlackBackground() const { return m_black; }
38 |
39 | double actualZoom() const;
40 |
41 | public: // overrides
42 | QSize sizeHint() const;
43 |
44 | protected: // overrides
45 | void paintEvent( QPaintEvent* e );
46 |
47 | void wheelEvent( QWheelEvent* e );
48 |
49 | void resizeEvent( QResizeEvent* e );
50 |
51 | signals:
52 | void zoomIn();
53 | void zoomOut();
54 |
55 | void zoomChanged();
56 |
57 | private:
58 | QImage m_image;
59 |
60 | double m_zoom;
61 |
62 | bool m_black;
63 | };
64 |
65 | #endif
66 |
--------------------------------------------------------------------------------
/src/viewer/imageloader.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "imageloader.h"
20 | #include "shell/streamdevice.h"
21 |
22 | ImageLoader::ImageLoader( const ShellPidl& pidl ) :
23 | m_pidl( pidl ),
24 | m_aborted( false )
25 | {
26 | }
27 |
28 | ImageLoader::~ImageLoader()
29 | {
30 | }
31 |
32 | void ImageLoader::run()
33 | {
34 | StreamDevice file( m_pidl );
35 |
36 | if ( file.open( QIODevice::ReadOnly ) ) {
37 | QImageReader reader( &file );
38 |
39 | reader.setAutoTransform( true );
40 |
41 | m_format = reader.format();
42 |
43 | if ( reader.read( &m_image ) && !m_aborted )
44 | emit imageAvailable();
45 | }
46 | }
47 |
48 | void ImageLoader::abort()
49 | {
50 | m_aborted = true;
51 |
52 | connect( this, SIGNAL( finished() ), this, SLOT( deleteLater() ) );
53 |
54 | if ( isFinished() )
55 | deleteLater();
56 | }
57 |
--------------------------------------------------------------------------------
/src/viewer/imageloader.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef IMAGELOADER_H
20 | #define IMAGELOADER_H
21 |
22 | #include "shell/shellpidl.h"
23 |
24 | #include
25 |
26 | class ImageLoader : public QThread
27 | {
28 | Q_OBJECT
29 | public:
30 | ImageLoader( const ShellPidl& pidl );
31 | ~ImageLoader();
32 |
33 | public:
34 | QByteArray format() const { return m_format; }
35 |
36 | QImage image() const { return m_image; }
37 |
38 | void abort();
39 |
40 | signals:
41 | void imageAvailable();
42 |
43 | protected: // overrides
44 | void run();
45 |
46 | private:
47 | ShellPidl m_pidl;
48 | QByteArray m_format;
49 |
50 | QImage m_image;
51 |
52 | bool m_aborted;
53 | };
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/src/viewer/imageview.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef IMAGEVIEW_H
20 | #define IMAGEVIEW_H
21 |
22 | #include "viewer/view.h"
23 |
24 | class ImageLabel;
25 | class ImageLoader;
26 |
27 | class ImageView : public View
28 | {
29 | Q_OBJECT
30 | public:
31 | ImageView( QObject* parent, QWidget* parentWidget );
32 | ~ImageView();
33 |
34 | public: // overrides
35 | Type type() const;
36 |
37 | void load();
38 |
39 | void storeSettings();
40 |
41 | private slots:
42 | void updateActions();
43 |
44 | void copy();
45 |
46 | void zoomFit();
47 |
48 | void zoomIn();
49 | void zoomOut();
50 | void zoomOriginal();
51 |
52 | void rotateLeft();
53 | void rotateRight();
54 |
55 | void blackBackground();
56 |
57 | void viewInformation();
58 |
59 | void contextMenuRequested( const QPoint& pos );
60 |
61 | void loadImage();
62 |
63 | void updateStatus();
64 |
65 | void loadIcons();
66 |
67 | private:
68 | void initializeSettings();
69 |
70 | void zoom( double factor );
71 | void adjustScrollBar( QScrollBar* scrollBar, double factor );
72 |
73 | private:
74 | QScrollArea* m_scroll;
75 |
76 | ImageLabel* m_label;
77 |
78 | ImageLoader* m_loader;
79 | };
80 |
81 | #endif
82 |
--------------------------------------------------------------------------------
/src/viewer/textedit.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef TEXTEDIT_H
20 | #define TEXTEDIT_H
21 |
22 | class LineNumberArea;
23 |
24 | class TextEdit : public QPlainTextEdit
25 | {
26 | Q_OBJECT
27 | public:
28 | TextEdit( QWidget* parent );
29 | ~TextEdit();
30 |
31 | public:
32 | void setLineNumbers( bool numbers );
33 | bool lineNumbers() const { return m_lineNumbers; }
34 |
35 | protected:
36 | void resizeEvent( QResizeEvent* e );
37 |
38 | private slots:
39 | void updateLineNumberAreaWidth();
40 | void updateLineNumberArea( const QRect& rect, int dy );
41 |
42 | void themeChanged();
43 |
44 | private:
45 | void lineNumberAreaPaintEvent( QPaintEvent* e );
46 | int lineNumberAreaWidth();
47 |
48 | private:
49 | bool m_lineNumbers;
50 |
51 | LineNumberArea* m_lineNumberArea;
52 |
53 | friend class LineNumberArea;
54 | };
55 |
56 | #endif
57 |
--------------------------------------------------------------------------------
/src/viewer/textloader.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef TEXTLOADER_H
20 | #define TEXTLOADER_H
21 |
22 | #include "shell/shellpidl.h"
23 |
24 | #include
25 |
26 | class TextLoader : public QThread
27 | {
28 | Q_OBJECT
29 | public:
30 | TextLoader( const ShellPidl& pidl, const QByteArray& format );
31 | ~TextLoader();
32 |
33 | public:
34 | QString nextBlock();
35 |
36 | bool atEnd() const { return m_atEnd; }
37 |
38 | qint64 estimatedLength() const { return m_estimatedLength; }
39 |
40 | void abort();
41 |
42 | signals:
43 | void nextBlockAvailable();
44 |
45 | protected: // overrides
46 | void run();
47 |
48 | private:
49 | ShellPidl m_pidl;
50 | QByteArray m_format;
51 |
52 | QMutex m_mutex;
53 |
54 | QQueue m_queue;
55 |
56 | bool m_aborted;
57 | bool m_signal;
58 |
59 | bool m_atEnd;
60 | qint64 m_estimatedLength;
61 | };
62 |
63 | #endif
64 |
--------------------------------------------------------------------------------
/src/viewer/textview.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef TEXTVIEW_H
20 | #define TEXTVIEW_H
21 |
22 | #include "viewer/view.h"
23 |
24 | class TextEdit;
25 | class FindBar;
26 | class TextLoader;
27 |
28 | class TextView : public View
29 | {
30 | Q_OBJECT
31 | public:
32 | TextView( QObject* parent, QWidget* parentWidget );
33 | ~TextView();
34 |
35 | public: // overrides
36 | Type type() const;
37 |
38 | void load();
39 |
40 | void storeSettings();
41 |
42 | void setFullScreen( bool on );
43 |
44 | bool eventFilter( QObject* obj, QEvent* e );
45 |
46 | private slots:
47 | void updateActions();
48 |
49 | void copy();
50 | void selectAll();
51 |
52 | void find();
53 | void findNext();
54 | void findPrevious();
55 |
56 | void findText( const QString& text );
57 |
58 | void toggleLineNumbers();
59 | void goToLine();
60 |
61 | void toggleWordWrap();
62 | void setEncoding( const QString& format );
63 |
64 | void selectEncoding();
65 |
66 | void editFile();
67 |
68 | void contextMenuRequested( const QPoint& pos );
69 |
70 | void loadNextBlock();
71 |
72 | void settingsChanged();
73 |
74 | void loadIcons();
75 |
76 | private:
77 | void initializeSettings();
78 |
79 | QMenu* createEncodingMenu();
80 |
81 | void findText( const QString& text, int from, QTextDocument::FindFlags flags );
82 |
83 | private:
84 | TextEdit* m_edit;
85 |
86 | TextLoader* m_loader;
87 |
88 | qint64 m_length;
89 |
90 | QString m_encoding;
91 |
92 | QSignalMapper* m_encodingMapper;
93 |
94 | FindBar* m_findBar;
95 |
96 | bool m_isFindEnabled;
97 |
98 | int m_currentLine;
99 | };
100 |
101 | #endif
102 |
--------------------------------------------------------------------------------
/src/viewer/view.cpp:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #include "view.h"
20 |
21 | #include "viewer/textview.h"
22 | #include "viewer/binaryview.h"
23 | #include "viewer/imageview.h"
24 |
25 | View::View( QObject* parent ) : QObject( parent ),
26 | m_mainWidget( NULL )
27 | {
28 | }
29 |
30 | View::~View()
31 | {
32 | delete m_mainWidget;
33 | }
34 |
35 | void View::setMainWidget( QWidget* widget )
36 | {
37 | m_mainWidget = widget;
38 | }
39 |
40 | void View::setPidl( const ShellPidl& pidl )
41 | {
42 | m_pidl = pidl;
43 | }
44 |
45 | void View::setFormat( const QByteArray& format )
46 | {
47 | m_format = format;
48 | }
49 |
50 | void View::setStatus( const QString& status )
51 | {
52 | if ( m_status != status ) {
53 | m_status = status;
54 | emit statusChanged( status );
55 | }
56 | }
57 |
58 | View* View::createView( Type type, QObject* parent, QWidget* parentWidget )
59 | {
60 | switch ( type ) {
61 | case Text:
62 | return new TextView( parent, parentWidget );
63 | case Binary:
64 | return new BinaryView( parent, parentWidget );
65 | case Image:
66 | return new ImageView( parent, parentWidget );
67 | default:
68 | return NULL;
69 | }
70 | }
71 |
72 | void View::setFullScreen( bool on )
73 | {
74 | QLayout* layout = mainWidget()->layout();
75 | if ( on ) {
76 | layout->setContentsMargins( 0, 0, 0, 0 );
77 | if ( QFrame* frame = qobject_cast( layout->itemAt( 0 )->widget() ) )
78 | frame->setFrameStyle( 0 );
79 | } else {
80 | layout->setContentsMargins( 3, 0, 3, 0 );
81 | if ( QFrame* frame = qobject_cast( layout->itemAt( 0 )->widget() ) )
82 | frame->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/viewer/view.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef VIEW_H
20 | #define VIEW_H
21 |
22 | #include "shell/shellpidl.h"
23 | #include "xmlui/client.h"
24 |
25 | #include
26 |
27 | class View : public QObject, public XmlUi::Client
28 | {
29 | Q_OBJECT
30 | public:
31 | explicit View( QObject* parent );
32 | ~View();
33 |
34 | public:
35 | enum Type
36 | {
37 | Auto,
38 | Text,
39 | Binary,
40 | Image
41 | };
42 |
43 | public:
44 | QWidget* mainWidget() const { return m_mainWidget; }
45 |
46 | void setPidl( const ShellPidl& pidl );
47 | const ShellPidl& pidl() const { return m_pidl; }
48 |
49 | void setFormat( const QByteArray& format );
50 | const QByteArray& format() const { return m_format; }
51 |
52 | const QString& status() const { return m_status; }
53 |
54 | static View* createView( Type type, QObject* parent, QWidget* parentWidget );
55 |
56 | public:
57 | virtual Type type() const = 0;
58 |
59 | virtual void load() = 0;
60 |
61 | virtual void storeSettings() = 0;
62 |
63 | virtual void setFullScreen( bool on );
64 |
65 | signals:
66 | void statusChanged( const QString& status );
67 |
68 | protected:
69 | void setMainWidget( QWidget* widget );
70 |
71 | void setStatus( const QString& status );
72 |
73 | private:
74 | QWidget* m_mainWidget;
75 |
76 | ShellPidl m_pidl;
77 | QByteArray m_format;
78 |
79 | QString m_status;
80 | };
81 |
82 | #endif
83 |
--------------------------------------------------------------------------------
/src/viewer/viewer.pri:
--------------------------------------------------------------------------------
1 | HEADERS += viewer/binaryloader.h \
2 | viewer/binaryview.h \
3 | viewer/gotodialog.h \
4 | viewer/imagelabel.h \
5 | viewer/imageloader.h \
6 | viewer/imageview.h \
7 | viewer/textedit.h \
8 | viewer/textloader.h \
9 | viewer/textview.h \
10 | viewer/view.h \
11 | viewer/viewerwindow.h \
12 | viewer/viewmanager.h
13 |
14 | SOURCES += viewer/binaryloader.cpp \
15 | viewer/binaryview.cpp \
16 | viewer/gotodialog.cpp \
17 | viewer/imagelabel.cpp \
18 | viewer/imageloader.cpp \
19 | viewer/imageview.cpp \
20 | viewer/textedit.cpp \
21 | viewer/textloader.cpp \
22 | viewer/textview.cpp \
23 | viewer/view.cpp \
24 | viewer/viewerwindow.cpp \
25 | viewer/viewmanager.cpp
26 |
--------------------------------------------------------------------------------
/src/viewer/viewerwindow.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef VIEWERWINDOW_H
20 | #define VIEWERWINDOW_H
21 |
22 | #include "viewer/view.h"
23 | #include "xmlui/client.h"
24 |
25 | #include
26 |
27 | class ViewerWindow : public QMainWindow, public XmlUi::Client
28 | {
29 | Q_OBJECT
30 | public:
31 | ViewerWindow();
32 | ~ViewerWindow();
33 |
34 | public:
35 | void setView( View* view );
36 |
37 | void enableNavigation( bool isFirst, bool isLast );
38 |
39 | protected: // overrides
40 | void showEvent( QShowEvent* e );
41 |
42 | private slots:
43 | void previous();
44 | void next();
45 |
46 | void reload();
47 |
48 | void switchToText();
49 | void switchToBinary();
50 | void switchToImage();
51 |
52 | void fullScreen();
53 |
54 | void statusChanged( const QString& status );
55 |
56 | void loadIcons();
57 |
58 | private:
59 | void initializeGeometry();
60 | void storeGeometry( bool offset );
61 |
62 | private:
63 | View* m_view;
64 |
65 | QLabel* m_statusLabel;
66 |
67 | bool m_restoreMaximized;
68 | };
69 |
70 | #endif
71 |
--------------------------------------------------------------------------------
/src/viewer/viewmanager.h:
--------------------------------------------------------------------------------
1 | /**************************************************************************
2 | * This file is part of the Saladin program
3 | * Copyright (C) 2011-2017 Michał Męciński
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | **************************************************************************/
18 |
19 | #ifndef VIEWMANAGER_H
20 | #define VIEWMANAGER_H
21 |
22 | #include "viewer/view.h"
23 |
24 | #include
25 |
26 | class ShellPidl;
27 | class ViewManagerPrivate;
28 | class ViewerWindow;
29 | class ViewItem;
30 |
31 | class ViewManager : public QObject
32 | {
33 | Q_OBJECT
34 | public:
35 | ViewManager();
36 | ~ViewManager();
37 |
38 | public:
39 | void openView( const ShellPidl& pidl );
40 | void openView( const QList& pidls );
41 |
42 | void loadPrevious( ViewerWindow* window );
43 | void loadNext( ViewerWindow* window );
44 |
45 | void switchViewType( ViewerWindow* window, View::Type type );
46 |
47 | private slots:
48 | void windowDestroyed( QObject* window );
49 |
50 | private:
51 | void loadView( ViewItem& item, View::Type type );
52 |
53 | void updateTitle( ViewItem& item, const QString& name );
54 |
55 | bool checkType( const ShellPidl& pidl, View::Type inType, View::Type& outType, QByteArray& format, QString& name );
56 |
57 | private:
58 | ViewManagerPrivate* d;
59 | };
60 |
61 | #endif
62 |
--------------------------------------------------------------------------------
/src/xmlui/README:
--------------------------------------------------------------------------------
1 | Simple XML-based UI builder for Qt
2 | Version 3.0
3 |
4 | This library provides a tool strip widget, replacing classic menu bar and
5 | toolbars, and facilities for defining and merging the layout of actions
6 | from multiple components, using simple XML files.
7 |
8 | Website: http://www.mimec.org/components/xmlui
9 |
10 | Copyright
11 | =========
12 |
13 | Copyright (C) 2007-2017 Michał Męciński
14 |
15 | Special thanks for Filipe Azevedo for the MacStyle contribution.
16 |
17 | License
18 | =======
19 |
20 | Redistribution and use in source and binary forms, with or without
21 | modification, are permitted provided that the following conditions are met:
22 | 1. Redistributions of source code must retain the above copyright notice,
23 | this list of conditions and the following disclaimer.
24 | 2. Redistributions in binary form must reproduce the above copyright
25 | notice, this list of conditions and the following disclaimer in the
26 | documentation and/or other materials provided with the distribution.
27 | 3. Neither the name of the copyright holder nor the names of the
28 | contributors may be used to endorse or promote products derived from
29 | this software without specific prior written permission.
30 |
31 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
32 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
35 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
36 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
37 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
38 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
39 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 | POSSIBILITY OF SUCH DAMAGE.
42 |
--------------------------------------------------------------------------------
/src/xmlui/gradientwidget.cpp:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | * Simple XML-based UI builder for Qt
3 | * Copyright (C) 2007-2017 Michał Męciński
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions are met:
7 | * 1. Redistributions of source code must retain the above copyright notice,
8 | * this list of conditions and the following disclaimer.
9 | * 2. Redistributions in binary form must reproduce the above copyright
10 | * notice, this list of conditions and the following disclaimer in the
11 | * documentation and/or other materials provided with the distribution.
12 | * 3. Neither the name of the copyright holder nor the names of the
13 | * contributors may be used to endorse or promote products derived from
14 | * this software without specific prior written permission.
15 | *
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 | * POSSIBILITY OF SUCH DAMAGE.
27 | ****************************************************************************/
28 |
29 | #include "gradientwidget.h"
30 |
31 | using namespace XmlUi;
32 |
33 | GradientWidget::GradientWidget( QWidget* parent ) : QWidget( parent )
34 | {
35 | }
36 |
37 | GradientWidget::~GradientWidget()
38 | {
39 | }
40 |
--------------------------------------------------------------------------------
/src/xmlui/gradientwidget.h:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | * Simple XML-based UI builder for Qt
3 | * Copyright (C) 2007-2017 Michał Męciński
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions are met:
7 | * 1. Redistributions of source code must retain the above copyright notice,
8 | * this list of conditions and the following disclaimer.
9 | * 2. Redistributions in binary form must reproduce the above copyright
10 | * notice, this list of conditions and the following disclaimer in the
11 | * documentation and/or other materials provided with the distribution.
12 | * 3. Neither the name of the copyright holder nor the names of the
13 | * contributors may be used to endorse or promote products derived from
14 | * this software without specific prior written permission.
15 | *
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 | * POSSIBILITY OF SUCH DAMAGE.
27 | ****************************************************************************/
28 |
29 | #ifndef XMLUI_GRADIENTWIDGET_H
30 | #define XMLUI_GRADIENTWIDGET_H
31 |
32 | #include
33 |
34 | namespace XmlUi
35 | {
36 |
37 | /**
38 | * Widget with styled gradient background.
39 | *
40 | * It uses the XmlUi::WindowsStyle if available to draw the gradient.
41 | * Otherwise it falls back to plain white background.
42 | */
43 | class GradientWidget : public QWidget
44 | {
45 | Q_OBJECT
46 | public:
47 | /**
48 | * Constructor.
49 | * @param parent The parent widget.
50 | */
51 | GradientWidget( QWidget* parent );
52 |
53 | /**
54 | * Destructor.
55 | */
56 | ~GradientWidget();
57 | };
58 |
59 | }
60 |
61 | #endif
62 |
--------------------------------------------------------------------------------
/src/xmlui/xmlui.pri:
--------------------------------------------------------------------------------
1 | HEADERS += $$PWD/builder.h \
2 | $$PWD/client.h \
3 | $$PWD/gradientwidget.h \
4 | $$PWD/node_p.h \
5 | $$PWD/toolstrip.h \
6 | $$PWD/toolstrip_p.h
7 |
8 | SOURCES += $$PWD/builder.cpp \
9 | $$PWD/client.cpp \
10 | $$PWD/gradientwidget.cpp \
11 | $$PWD/toolstrip.cpp
12 |
13 | win32 {
14 | HEADERS += $$PWD/windowsstyle.h
15 | SOURCES += $$PWD/windowsstyle.cpp
16 | }
17 |
--------------------------------------------------------------------------------
/translations/locale.ini:
--------------------------------------------------------------------------------
1 | ; Locale information for Saladin
2 |
3 | [languages]
4 | de = Deutsch
5 | en_US = English / United States
6 | es = Español
7 | hu = Magyar
8 | pl = Polski
9 | pt_BR = Português / Brasil
10 | ru = Русский
11 |
--------------------------------------------------------------------------------
/translations/saladin_de.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_de.qm
--------------------------------------------------------------------------------
/translations/saladin_es.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_es.qm
--------------------------------------------------------------------------------
/translations/saladin_hu.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_hu.qm
--------------------------------------------------------------------------------
/translations/saladin_pl.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_pl.qm
--------------------------------------------------------------------------------
/translations/saladin_pt_BR.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_pt_BR.qm
--------------------------------------------------------------------------------
/translations/saladin_ru.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_ru.qm
--------------------------------------------------------------------------------