git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/dolphin@1076309 283d02a7-25f6-0310-bc7c-ecb5cbfe19dav3.5.13-sru
commit
f48aef5ed7
@ -0,0 +1,4 @@
|
||||
Marcel Juhnke <marrat@marrat.homelinux.org>
|
||||
Peter Penz <peter.penz@gmx.at>
|
||||
Cvetoslav Ludmiloff <ludmiloff@gmail.com>
|
||||
Stefan Monov <logixoul@gmail.com>
|
@ -0,0 +1,113 @@
|
||||
0.9
|
||||
|
||||
- Renamed to D3lphin (Marcel Juhnke maintains this from now on - send bug reports to him).
|
||||
- Integrated a second sidebar on the right.
|
||||
- Integrated Folder-like navigation for .tar- and .zip-files (Filip Brcic).
|
||||
- Fixed: If you select the first sub-folder in a folder in the breadcrumb view, the view jumps not into this directory.
|
||||
- Many thanks to Peter Penz and sorry for not integrating many new things in D3lphin.
|
||||
|
||||
0.8.2
|
||||
|
||||
- Updated German translation (Jannick Kuhr)
|
||||
- Updated Polish translation (Piotr Malinski)
|
||||
|
||||
0.8.1
|
||||
|
||||
- Split view divides the window in two equal sections.
|
||||
|
||||
- Updated the documentation how to make Dolphin the default file manager (Michael Austin).
|
||||
|
||||
- Updated Estonian translation (Ain Vagula).
|
||||
|
||||
0.8.0
|
||||
|
||||
- Provide a sidebar for accessing bookmarks and the history. ATTENTION: old bookmarks will get lost by the update, as the Dolphin proprietary format has been exchanged by the XBEL standard (http://pyxml.sourceforge.net/topics/xbel/).
|
||||
|
||||
- Update of documentation including screenshots (Michael Austin).
|
||||
|
||||
- Provide a drop down menu in the navigation bar for accessing directories (patch submitted by Aaron J. Seigo).
|
||||
|
||||
- Remember view properties also for folders having no write access (e. g. root) (patch submitted by Aaron J. Seigo)
|
||||
|
||||
- Provide filter bar (patch submitted by Gregor Kalisnik)
|
||||
|
||||
- Don't differ between fixed and editable bookmarks anymore. Provide sensible defaults but let the user decide.
|
||||
|
||||
- Don't show the volume space widget if the volume space is not available.
|
||||
|
||||
- Minor cosmetic fixes in the navigation bar and volume space information.
|
||||
|
||||
0.7.0
|
||||
|
||||
- Renaming of a variable number of selected items in one step is supported now.
|
||||
|
||||
- Translations for Estonian, French, Hebrew and Polish (thanks to Ain Vagula, Stephane Lesimple, Patrice Tremblay, Itai Alter and Piotr Maliński)
|
||||
|
||||
- When dragging a file A above file B, file A is copied into the directory of file B instead of replacing file B itself (Bug 1559793).
|
||||
|
||||
- Use larger icons in bookmarks menu applied, this allows a faster access (patch submitted by Patrice Tremblay)
|
||||
|
||||
- The default bookmark for 'System' has been replaced by 'Storage Media', 'Network' and 'Trash' (patch submitted by Patrice Tremblay)
|
||||
|
||||
- General Settings page: use "Home URL" instead of "Home" as this prevents some translation issues for French (patch submitted by Patrice Tremblay)
|
||||
|
||||
- Minor fixes for the disk space information (patch submitted by Patrice Tremblay).
|
||||
|
||||
- Replaced "Edit Location" icon (submitted by Patrice Tremblay).
|
||||
|
||||
- Refresh the icon positions when a file has been deleted (Bug 1548249)
|
||||
|
||||
- New service menu 'Open as Root' for directories.
|
||||
|
||||
- Fixed possible wrong selection in Details View (Bug 1547516)
|
||||
|
||||
|
||||
0.6.2
|
||||
- The status bar shows the available size of the current mount point.
|
||||
- Added sidebar widgets (pre alpha stage)
|
||||
- Added support for KDE session management (Feature Request 1539965)
|
||||
- The sorting type and order is remembered for each directory.
|
||||
- When selecting files the amount of size is shown in the statusbar (Bug 1537554).
|
||||
- Position of scrollbars is remembered also if the scroll wheel is used (Bug 1537252).
|
||||
- The content of the 'Size' column in the details mode is right aligned (Bug 1539685).
|
||||
- When entering an URL, then ~ is replaced by the users home directory (Bug 1537539).
|
||||
- It's possible to specify default modes for 'Split view' and 'Editable navigation bar' for startup.
|
||||
- Fixed wrong preview position for some MIME types.
|
||||
- Improved error messages.
|
||||
|
||||
0.6.1
|
||||
- Several fixes for service menus: services like 'mount', 'unmount' and 'eject' are available
|
||||
- Allow to bookmark the current folder with the context menu (thanks to Cvetoslav Ludmiloff).
|
||||
- View mode 'Details': it's assured that the content of the columns and header match together when turning off columns.
|
||||
- Respect alternate color setting from KDE in the view mode 'Details'.
|
||||
- Additional shortcuts for keyboards (thanks to Anatolie Cernii).
|
||||
|
||||
0.6.0
|
||||
- Added support for Console, KFind and file comparing (Kompare).
|
||||
- The sorting can be adjusted for each view mode by name, size or date.
|
||||
- Zoom support for all view modes.
|
||||
- Path in title is updated when changing between split views.
|
||||
- Minor service menus fixes.
|
||||
|
||||
0.5.2
|
||||
|
||||
- Fixed issue that moving, copying and renaming of files on non local directories failed under certain circumstances.
|
||||
- The previews are not positioned in a wrong manner for specific MIME types anymore.
|
||||
- Creating files on non local directories works.
|
||||
- Don't clear selection if the focus is changed on a split view.
|
||||
- The view mode 'Icons' strictly refuses to generate any kind of preview.
|
||||
- Pressing 'Escape' in the 'Edit Location' mode of the navigation bar switches to the 'Browse' mode.
|
||||
- View properties dialog: don't ask for confirmation, if no change has been done by the user.
|
||||
- File information is shown in statusbar when the mouse pointer is above an item.
|
||||
- Spanish translation (thanks to Nestor Diaz).
|
||||
|
||||
0.5.1
|
||||
|
||||
- Command line options are supported.
|
||||
- Added menu entries and shortcuts for switching the navigation bar between the modes 'Edit Location (Ctrl+L)' and 'Browse (Ctrl+B)'.
|
||||
- If the view is split and the Dolphin settings are modified, the width of the split view is not changed to zero anymore.
|
||||
- Patches for gcc-2.95 (thanks to Leo Savernik).
|
||||
|
||||
0.5.0
|
||||
|
||||
- Initial release.
|
@ -0,0 +1,275 @@
|
||||
# Doxyfile 1.4.1-KDevelop
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = d3lphin.kdevelop
|
||||
PROJECT_NUMBER = 0.9
|
||||
OUTPUT_DIRECTORY =
|
||||
CREATE_SUBDIRS = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
USE_WINDOWS_ENCODING = NO
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF = "The $name class" \
|
||||
"The $name widget" \
|
||||
"The $name file" \
|
||||
is \
|
||||
provides \
|
||||
specifies \
|
||||
contains \
|
||||
represents \
|
||||
a \
|
||||
an \
|
||||
the
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = YES
|
||||
STRIP_FROM_PATH = /home/marcel/
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = NO
|
||||
INHERIT_DOCS = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
TAB_SIZE = 8
|
||||
ALIASES =
|
||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
SUBGROUPING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = NO
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_STATIC = NO
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_DIRECTORIES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = /home/marcel/Desktop/d3lphin
|
||||
FILE_PATTERNS = *.c \
|
||||
*.cc \
|
||||
*.cxx \
|
||||
*.cpp \
|
||||
*.c++ \
|
||||
*.java \
|
||||
*.ii \
|
||||
*.ixx \
|
||||
*.ipp \
|
||||
*.i++ \
|
||||
*.inl \
|
||||
*.h \
|
||||
*.hh \
|
||||
*.hxx \
|
||||
*.hpp \
|
||||
*.h++ \
|
||||
*.idl \
|
||||
*.odl \
|
||||
*.cs \
|
||||
*.php \
|
||||
*.php3 \
|
||||
*.inc \
|
||||
*.m \
|
||||
*.mm \
|
||||
*.dox \
|
||||
*.C \
|
||||
*.CC \
|
||||
*.C++ \
|
||||
*.II \
|
||||
*.I++ \
|
||||
*.H \
|
||||
*.HH \
|
||||
*.H++ \
|
||||
*.CS \
|
||||
*.PHP \
|
||||
*.PHP3 \
|
||||
*.M \
|
||||
*.MM \
|
||||
*.C \
|
||||
*.H \
|
||||
*.tlh \
|
||||
*.diff \
|
||||
*.patch \
|
||||
*.moc \
|
||||
*.xpm \
|
||||
*.dox
|
||||
RECURSIVE = YES
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS = *
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = NO
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = YES
|
||||
REFERENCES_RELATION = YES
|
||||
VERBATIM_HEADERS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = NO
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
GENERATE_TREEVIEW = NO
|
||||
TREEVIEW_WIDTH = 250
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = YES
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = YES
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
XML_PROGRAMLISTING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE = d3lphin.tag
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = YES
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = NO
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
MAX_DOT_GRAPH_DEPTH = 999
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = NO
|
@ -0,0 +1,167 @@
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes a while. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
4. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made.
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
|
@ -0,0 +1,22 @@
|
||||
SUBDIRS = $(TOPSUBDIRS)
|
||||
|
||||
$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
|
||||
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
|
||||
|
||||
$(top_srcdir)/subdirs:
|
||||
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
|
||||
|
||||
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
|
||||
@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
|
||||
|
||||
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
|
||||
|
||||
package-messages:
|
||||
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common package-messages
|
||||
$(MAKE) -C po merge
|
||||
|
||||
EXTRA_DIST = admin COPYING configure.in.in
|
||||
|
||||
dist-hook:
|
||||
cd $(top_distdir) && perl admin/am_edit -padmin
|
||||
cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
|
@ -0,0 +1,10 @@
|
||||
all:
|
||||
@echo "This Makefile is only for the CVS repository"
|
||||
@echo "This will be deleted before making the distribution"
|
||||
@echo ""
|
||||
$(MAKE) -f admin/Makefile.common cvs
|
||||
|
||||
dist:
|
||||
$(MAKE) -f admin/Makefile.common dist
|
||||
|
||||
.SILENT:
|
@ -0,0 +1,4 @@
|
||||
Code duplication:
|
||||
-----------------
|
||||
|
||||
BookmarksSidebarPage::adjustSelection() uses same code as BookmarkSelector::updateSelection(). Suggestion: provide generic class in combination with the URL Navigator for this.
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,892 @@
|
||||
# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
|
||||
[m4_warning([this file was generated for autoconf 2.63.
|
||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.10'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.10.2], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
# _AM_AUTOCONF_VERSION(VERSION)
|
||||
# -----------------------------
|
||||
# aclocal traces this macro to find the Autoconf version.
|
||||
# This is a private macro too. Using m4_define simplifies
|
||||
# the logic in aclocal, which can simply ignore this definition.
|
||||
m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.10.2])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_PREREQ(2.52)dnl
|
||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])dnl
|
||||
AC_SUBST([$1_FALSE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 9
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], UPC, [depcc="$UPC" am_compiler_list=],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
||||
# Solaris 8's {/usr,}/bin/sh.
|
||||
touch sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# or remarks (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored or not supported.
|
||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
||||
# The diagnosis changed in icc 8.0:
|
||||
# icc: Command line remark: option '-MP' not supported
|
||||
if (grep 'ignoring option' conftest.err ||
|
||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
#serial 5
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[{
|
||||
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
||||
# are listed without --file. Let's play safe and only enable the eval
|
||||
# if we detect the quoting.
|
||||
case $CONFIG_FILES in
|
||||
*\'*) eval set x "$CONFIG_FILES" ;;
|
||||
*) set x $CONFIG_FILES ;;
|
||||
esac
|
||||
shift
|
||||
for mf
|
||||
do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running `make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n 's/^U = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
}
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 13
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||
dnl the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
||||
# is not polluted with repeated "-I."
|
||||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
|
||||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
|
||||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||
[_AM_PROG_TAR([v7])])])
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
||||
[_AM_DEPENDENCIES(OBJC)],
|
||||
[define([AC_PROG_OBJC],
|
||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_arg=$1
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$_am_arg | $_am_arg:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||
[rm -rf .tst 2>/dev/null
|
||||
mkdir .tst 2>/dev/null
|
||||
if test -d .tst; then
|
||||
am__leading_dot=.
|
||||
else
|
||||
am__leading_dot=_
|
||||
fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
am__doit:
|
||||
@echo done
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check for `mkdir -p'.
|
||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
|
||||
dnl while keeping a definition of mkdir_p for backward compatibility.
|
||||
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
|
||||
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
|
||||
dnl Makefile.ins that do not define MKDIR_P, so we do our own
|
||||
dnl adjustment using top_builddir (which is defined more often than
|
||||
dnl MKDIR_P).
|
||||
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
|
||||
case $mkdir_p in
|
||||
[[\\/$]]* | ?:[[\\/]]*) ;;
|
||||
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# ------------------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ----------------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||
# ---------------------------
|
||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
||||
# This macro is traced by Automake.
|
||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
# Check how to create a tarball in format FORMAT.
|
||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
||||
#
|
||||
# Substitute a variable $(am__tar) that is a command
|
||||
# writing to stdout a FORMAT-tarball containing the directory
|
||||
# $tardir.
|
||||
# tardir=directory && $(am__tar) > result.tar
|
||||
#
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility.
|
||||
AM_MISSING_PROG([AMTAR], [tar])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([acinclude.m4])
|
@ -0,0 +1,255 @@
|
||||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* Define if building universal (internal helper macro) */
|
||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||
|
||||
/* Define to 1 if you have the <Carbon/Carbon.h> header file. */
|
||||
#undef HAVE_CARBON_CARBON_H
|
||||
|
||||
/* Define if you have the CoreAudio API */
|
||||
#undef HAVE_COREAUDIO
|
||||
|
||||
/* Define to 1 if you have the <crt_externs.h> header file. */
|
||||
#undef HAVE_CRT_EXTERNS_H
|
||||
|
||||
/* Defines if your system has the crypt function */
|
||||
#undef HAVE_CRYPT
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if you have libjpeg */
|
||||
#undef HAVE_LIBJPEG
|
||||
|
||||
/* Define if you have libpng */
|
||||
#undef HAVE_LIBPNG
|
||||
|
||||
/* Define if you have a working libpthread (will enable threaded code) */
|
||||
#undef HAVE_LIBPTHREAD
|
||||
|
||||
/* Define if you have libz */
|
||||
#undef HAVE_LIBZ
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if your system needs _NSGetEnviron to set up the environment */
|
||||
#undef HAVE_NSGETENVIRON
|
||||
|
||||
/* Define if you have res_init */
|
||||
#undef HAVE_RES_INIT
|
||||
|
||||
/* Define if you have the res_init prototype */
|
||||
#undef HAVE_RES_INIT_PROTO
|
||||
|
||||
/* Define if you have a STL implementation by SGI */
|
||||
#undef HAVE_SGI_STL
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define if you have strlcat */
|
||||
#undef HAVE_STRLCAT
|
||||
|
||||
/* Define if you have the strlcat prototype */
|
||||
#undef HAVE_STRLCAT_PROTO
|
||||
|
||||
/* Define if you have strlcpy */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Define if you have the strlcpy prototype */
|
||||
#undef HAVE_STRLCPY_PROTO
|
||||
|
||||
/* Define to 1 if you have the <sys/bitypes.h> header file. */
|
||||
#undef HAVE_SYS_BITYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#undef HAVE_VSNPRINTF
|
||||
|
||||
/* Suffix for lib directories */
|
||||
#undef KDELIBSUFF
|
||||
|
||||
/* Define a safe value for MAXPATHLEN */
|
||||
#undef KDEMAXPATHLEN
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* The size of `char *', as computed by sizeof. */
|
||||
#undef SIZEOF_CHAR_P
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* The size of `size_t', as computed by sizeof. */
|
||||
#undef SIZEOF_SIZE_T
|
||||
|
||||
/* The size of `unsigned long', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_LONG
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Defined if compiling without arts */
|
||||
#undef WITHOUT_ARTS
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# undef WORDS_BIGENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
|
||||
* headers and I'm too lazy to write a configure test as long as only
|
||||
* unixware is related
|
||||
*/
|
||||
#ifdef _UNIXWARE
|
||||
#define HAVE_BOOLEAN
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
|
||||
* that defines bzero.
|
||||
*/
|
||||
|
||||
#if defined(_AIX)
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
|
||||
# include <sys/time.h>
|
||||
# include <crt_externs.h>
|
||||
# define environ (*_NSGetEnviron())
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_RES_INIT_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
int res_init(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_STRLCAT_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
unsigned long strlcat(char*, const char*, unsigned long);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_STRLCPY_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
unsigned long strlcpy(char*, const char*, unsigned long);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* On HP-UX, the declaration of vsnprintf() is needed every time !
|
||||
*/
|
||||
|
||||
#if !defined(HAVE_VSNPRINTF) || defined(hpux)
|
||||
#if __STDC__
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
int snprintf(char *str, size_t n, char const *fmt, ...);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(__SVR4) && !defined(__svr4__)
|
||||
#define __svr4__ 1
|
||||
#endif
|
||||
|
||||
|
||||
/* type to use in place of socklen_t if not defined */
|
||||
#undef kde_socklen_t
|
||||
|
||||
/* type to use in place of socklen_t if not defined (deprecated, use
|
||||
kde_socklen_t) */
|
||||
#undef ksize_t
|
@ -0,0 +1,2 @@
|
||||
./admin/configure.in.min
|
||||
configure.in.in
|
@ -0,0 +1,131 @@
|
||||
dnl =======================================================
|
||||
dnl FILE: ./admin/configure.in.min
|
||||
dnl =======================================================
|
||||
|
||||
dnl This file is part of the KDE libraries/packages
|
||||
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
|
||||
|
||||
dnl This file is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Library General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2 of the License, or (at your option) any later version.
|
||||
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Library General Public License for more details.
|
||||
|
||||
dnl You should have received a copy of the GNU Library General Public License
|
||||
dnl along with this library; see the file COPYING.LIB. If not, write to
|
||||
dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
dnl Boston, MA 02110-1301, USA.
|
||||
|
||||
# Original Author was Kalle@kde.org
|
||||
# I lifted it in some mater. (Stephan Kulow)
|
||||
# I used much code from Janos Farkas
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT(acinclude.m4) dnl a source file from your sub dir
|
||||
|
||||
dnl This is so we can use kde-common
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
|
||||
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
|
||||
unset CDPATH
|
||||
|
||||
dnl Checking host/target/build systems, for make, install etc.
|
||||
AC_CANONICAL_SYSTEM
|
||||
dnl Perform program name transformation
|
||||
AC_ARG_PROGRAM
|
||||
|
||||
dnl Automake doc recommends to do this only here. (Janos)
|
||||
AM_INIT_AUTOMAKE(d3lphin, 0.9) dnl searches for some needed programs
|
||||
|
||||
KDE_SET_PREFIX
|
||||
|
||||
dnl generate the config header
|
||||
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_CHECK_COMPILERS
|
||||
AC_ENABLE_SHARED(yes)
|
||||
AC_ENABLE_STATIC(no)
|
||||
KDE_PROG_LIBTOOL
|
||||
|
||||
dnl for NLS support. Call them in this order!
|
||||
dnl WITH_NLS is for the po files
|
||||
AM_KDE_WITH_NLS
|
||||
|
||||
KDE_USE_QT(3.2.0)
|
||||
AC_PATH_KDE
|
||||
dnl =======================================================
|
||||
dnl FILE: configure.in.in
|
||||
dnl =======================================================
|
||||
|
||||
#MIN_CONFIG(3.2.0)
|
||||
|
||||
dnl PACKAGE set before
|
||||
AC_C_BIGENDIAN
|
||||
AC_CHECK_KDEMAXPATHLEN
|
||||
|
||||
KDE_CREATE_SUBDIRSLIST
|
||||
AC_CONFIG_FILES([ Makefile ])
|
||||
AC_CONFIG_FILES([ doc/Makefile ])
|
||||
AC_CONFIG_FILES([ doc/en/Makefile ])
|
||||
AC_CONFIG_FILES([ po/Makefile ])
|
||||
AC_CONFIG_FILES([ src/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/128x128/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/16x16/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/22x22/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/32x32/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/48x48/Makefile ])
|
||||
AC_CONFIG_FILES([ src/pics/64x64/Makefile ])
|
||||
AC_CONFIG_FILES([ src/servicemenus/Makefile ])
|
||||
AC_OUTPUT
|
||||
# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure
|
||||
if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then
|
||||
# And if so, warn when they don't match
|
||||
if test "$kde_libs_prefix" != "$given_prefix"; then
|
||||
# And if kde doesn't know about the prefix yet
|
||||
echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null
|
||||
if test $? -ne 0; then
|
||||
echo ""
|
||||
echo "Warning: you chose to install this package in $given_prefix,"
|
||||
echo "but KDE was found in $kde_libs_prefix."
|
||||
echo "For this to work, you will need to tell KDE about the new prefix, by ensuring"
|
||||
echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix"
|
||||
echo "Then restart KDE."
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then
|
||||
echo ""
|
||||
echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility"
|
||||
echo "was not included. Therefore, GCC symbol visibility support remains disabled."
|
||||
echo ""
|
||||
echo "For better performance, consider including the Qt visibility supporting patch"
|
||||
echo "located at:"
|
||||
echo ""
|
||||
echo "http://bugs.kde.org/show_bug.cgi?id=109386"
|
||||
echo ""
|
||||
echo "and recompile all of Qt and KDE. Note, this is entirely optional and"
|
||||
echo "everything will continue to work just fine without it."
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if test "$all_tests" = "bad"; then
|
||||
if test ! "$cache_file" = "/dev/null"; then
|
||||
echo ""
|
||||
echo "Please remove the file $cache_file after changing your setup"
|
||||
echo "so that configure will find the changes next time."
|
||||
echo ""
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "Good - your configure finished. Start make now"
|
||||
echo ""
|
||||
fi
|
@ -0,0 +1,6 @@
|
||||
#MIN_CONFIG(3.2.0)
|
||||
|
||||
AM_INIT_AUTOMAKE(d3lphin, 0.9)
|
||||
AC_C_BIGENDIAN
|
||||
AC_CHECK_KDEMAXPATHLEN
|
||||
|
@ -0,0 +1,290 @@
|
||||
<?xml version = '1.0'?>
|
||||
<kdevelop>
|
||||
<general>
|
||||
<author>Marcel Juhnke</author>
|
||||
<email>marrat@marrat.homelinux.org</email>
|
||||
<version>0.9</version>
|
||||
<projectmanagement>KDevKDEAutoProject</projectmanagement>
|
||||
<primarylanguage>C++</primarylanguage>
|
||||
<keywords>
|
||||
<keyword>C++</keyword>
|
||||
<keyword>Code</keyword>
|
||||
<keyword>Qt</keyword>
|
||||
<keyword>KDE</keyword>
|
||||
</keywords>
|
||||
<projectdirectory>.</projectdirectory>
|
||||
<absoluteprojectpath>false</absoluteprojectpath>
|
||||
<description/>
|
||||
<ignoreparts>
|
||||
<part>kdevbookmarks</part>
|
||||
<part>kdevsnippet</part>
|
||||
<part>kdevctags2</part>
|
||||
<part>kdevkonsoleview</part>
|
||||
<part>kdevfilegroups</part>
|
||||
<part>kdevfilelist</part>
|
||||
<part>kdevfileselector</part>
|
||||
<part>kdevfileview</part>
|
||||
<part>kdevdistpart</part>
|
||||
<part>kdevopenwith</part>
|
||||
<part>kdevpartexplorer</part>
|
||||
<part>kdevquickopen</part>
|
||||
<part>kdevregexptest</part>
|
||||
<part>kdevreplace</part>
|
||||
<part>kdevscripting</part>
|
||||
<part>kdevfilter</part>
|
||||
<part>kdevtexttools</part>
|
||||
<part>kdevtools</part>
|
||||
</ignoreparts>
|
||||
<versioncontrol>kdevsubversion</versioncontrol>
|
||||
<projectname>d3lphin</projectname>
|
||||
<defaultencoding/>
|
||||
</general>
|
||||
<kdevautoproject>
|
||||
<general>
|
||||
<activetarget>src/d3lphin</activetarget>
|
||||
<useconfiguration>default</useconfiguration>
|
||||
</general>
|
||||
<run>
|
||||
<mainprogram/>
|
||||
<terminal>false</terminal>
|
||||
<directoryradio>executable</directoryradio>
|
||||
<customdirectory>/</customdirectory>
|
||||
<programargs/>
|
||||
<autocompile>true</autocompile>
|
||||
<envvars/>
|
||||
<globaldebugarguments/>
|
||||
<globalcwd/>
|
||||
<useglobalprogram>false</useglobalprogram>
|
||||
<autoinstall>false</autoinstall>
|
||||
<autokdesu>false</autokdesu>
|
||||
<runarguments>
|
||||
<d3lphin/>
|
||||
</runarguments>
|
||||
<debugarguments>
|
||||
<d3lphin/>
|
||||
</debugarguments>
|
||||
<cwd>
|
||||
<d3lphin>/home/marcel/Desktop/d3lphin/debug/./src</d3lphin>
|
||||
</cwd>
|
||||
</run>
|
||||
<make>
|
||||
<envvars>
|
||||
<envvar value="1" name="WANT_AUTOCONF_2_5" />
|
||||
<envvar value="1" name="WANT_AUTOMAKE_1_6" />
|
||||
</envvars>
|
||||
<abortonerror>false</abortonerror>
|
||||
<numberofjobs>2</numberofjobs>
|
||||
<dontact>false</dontact>
|
||||
<makebin/>
|
||||
<prio>0</prio>
|
||||
<runmultiplejobs>false</runmultiplejobs>
|
||||
</make>
|
||||
<configurations>
|
||||
<optimized>
|
||||
<builddir>optimized</builddir>
|
||||
<ccompiler>kdevgccoptions</ccompiler>
|
||||
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
||||
<f77compiler>kdevg77options</f77compiler>
|
||||
<cxxflags>-O2 -g0</cxxflags>
|
||||
<envvars/>
|
||||
</optimized>
|
||||
<debug>
|
||||
<configargs>--enable-debug=full</configargs>
|
||||
<builddir>debug</builddir>
|
||||
<ccompiler>kdevgccoptions</ccompiler>
|
||||
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
||||
<f77compiler>kdevg77options</f77compiler>
|
||||
<cxxflags>-O0 -g3</cxxflags>
|
||||
<envvars/>
|
||||
</debug>
|
||||
<default>
|
||||
<envvars/>
|
||||
</default>
|
||||
</configurations>
|
||||
</kdevautoproject>
|
||||
<kdevfileview>
|
||||
<groups>
|
||||
<group pattern="*.cpp;*.cxx;*.h" name="Sources" />
|
||||
<group pattern="*.ui" name="User Interface" />
|
||||
<group pattern="*.png" name="Icons" />
|
||||
<group pattern="*.po;*.ts" name="Translations" />
|
||||
<group pattern="*" name="Others" />
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
<hidenonlocation>false</hidenonlocation>
|
||||
</groups>
|
||||
<tree>
|
||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
||||
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
|
||||
<showvcsfields>false</showvcsfields>
|
||||
</tree>
|
||||
</kdevfileview>
|
||||
<kdevdoctreeview>
|
||||
<ignoretocs>
|
||||
<toc>ada</toc>
|
||||
<toc>ada_bugs_gcc</toc>
|
||||
<toc>bash</toc>
|
||||
<toc>bash_bugs</toc>
|
||||
<toc>clanlib</toc>
|
||||
<toc>w3c-dom-level2-html</toc>
|
||||
<toc>fortran_bugs_gcc</toc>
|
||||
<toc>gnome1</toc>
|
||||
<toc>gnustep</toc>
|
||||
<toc>gtk</toc>
|
||||
<toc>gtk_bugs</toc>
|
||||
<toc>haskell</toc>
|
||||
<toc>haskell_bugs_ghc</toc>
|
||||
<toc>java_bugs_gcc</toc>
|
||||
<toc>java_bugs_sun</toc>
|
||||
<toc>pascal_bugs_fp</toc>
|
||||
<toc>php</toc>
|
||||
<toc>php_bugs</toc>
|
||||
<toc>perl</toc>
|
||||
<toc>perl_bugs</toc>
|
||||
<toc>python</toc>
|
||||
<toc>python_bugs</toc>
|
||||
<toc>ruby</toc>
|
||||
<toc>ruby_bugs</toc>
|
||||
<toc>sdl</toc>
|
||||
<toc>w3c-svg</toc>
|
||||
<toc>sw</toc>
|
||||
<toc>w3c-uaag10</toc>
|
||||
<toc>wxwidgets_bugs</toc>
|
||||
</ignoretocs>
|
||||
<ignoreqt_xml>
|
||||
<toc>qmake User Guide</toc>
|
||||
</ignoreqt_xml>
|
||||
</kdevdoctreeview>
|
||||
<kdevdebugger>
|
||||
<general>
|
||||
<dbgshell>libtool</dbgshell>
|
||||
<programargs/>
|
||||
<gdbpath/>
|
||||
<breakonloadinglibs>true</breakonloadinglibs>
|
||||
<separatetty>false</separatetty>
|
||||
<floatingtoolbar>false</floatingtoolbar>
|
||||
<runappinappdirectory>true</runappinappdirectory>
|
||||
<configGdbScript/>
|
||||
<runShellScript/>
|
||||
<runGdbScript/>
|
||||
</general>
|
||||
<display>
|
||||
<staticmembers>false</staticmembers>
|
||||
<demanglenames>true</demanglenames>
|
||||
<outputradix>10</outputradix>
|
||||
</display>
|
||||
</kdevdebugger>
|
||||
<kdevfilecreate>
|
||||
<filetypes/>
|
||||
<useglobaltypes>
|
||||
<type ext="ui" />
|
||||
<type ext="cpp" />
|
||||
<type ext="h" />
|
||||
</useglobaltypes>
|
||||
</kdevfilecreate>
|
||||
<kdevcvs>
|
||||
<cvsoptions>-f</cvsoptions>
|
||||
<commitoptions/>
|
||||
<updateoptions>-dP</updateoptions>
|
||||
<addoptions/>
|
||||
<removeoptions>-f</removeoptions>
|
||||
<diffoptions>-u3 -p</diffoptions>
|
||||
<logoptions/>
|
||||
<rshoptions/>
|
||||
</kdevcvs>
|
||||
<cppsupportpart>
|
||||
<codecompletion/>
|
||||
<filetemplates>
|
||||
<choosefiles>false</choosefiles>
|
||||
<interfaceURL/>
|
||||
<implementationURL/>
|
||||
<interfacesuffix>.h</interfacesuffix>
|
||||
<implementationsuffix>.cpp</implementationsuffix>
|
||||
<lowercasefilenames>true</lowercasefilenames>
|
||||
</filetemplates>
|
||||
</cppsupportpart>
|
||||
<kdevclassview>
|
||||
<folderhierarchy>true</folderhierarchy>
|
||||
<depthoffolders>2</depthoffolders>
|
||||
</kdevclassview>
|
||||
<kdevdocumentation>
|
||||
<projectdoc>
|
||||
<docsystem>Doxygen Documentation Collection</docsystem>
|
||||
<docurl>d3lphin.tag</docurl>
|
||||
<usermanualurl/>
|
||||
</projectdoc>
|
||||
</kdevdocumentation>
|
||||
<substmap>
|
||||
<APPNAME>D3lphin</APPNAME>
|
||||
<APPNAMELC>d3lphin</APPNAMELC>
|
||||
<APPNAMESC>D3lphin</APPNAMESC>
|
||||
<APPNAMEUC>D3LPHIN</APPNAMEUC>
|
||||
<AUTHOR>Marcel Juhnke</AUTHOR>
|
||||
<EMAIL>marrat@marrat.homelinux.org</EMAIL>
|
||||
<LICENSE>GPL</LICENSE>
|
||||
<LICENSEFILE>COPYING</LICENSEFILE>
|
||||
<VERSION>0.9</VERSION>
|
||||
<YEAR>2007</YEAR>
|
||||
<dest>/home/marcel/Desktop/d3lphin</dest>
|
||||
</substmap>
|
||||
<kdevcppsupport>
|
||||
<references>
|
||||
<pcs>KDElibs</pcs>
|
||||
</references>
|
||||
<codecompletion>
|
||||
<includeGlobalFunctions>true</includeGlobalFunctions>
|
||||
<includeTypes>true</includeTypes>
|
||||
<includeEnums>true</includeEnums>
|
||||
<includeTypedefs>false</includeTypedefs>
|
||||
<automaticCodeCompletion>true</automaticCodeCompletion>
|
||||
<automaticArgumentsHint>true</automaticArgumentsHint>
|
||||
<automaticHeaderCompletion>true</automaticHeaderCompletion>
|
||||
<codeCompletionDelay>250</codeCompletionDelay>
|
||||
<argumentsHintDelay>400</argumentsHintDelay>
|
||||
<headerCompletionDelay>250</headerCompletionDelay>
|
||||
<showOnlyAccessibleItems>false</showOnlyAccessibleItems>
|
||||
<completionBoxItemOrder>0</completionBoxItemOrder>
|
||||
<howEvaluationContextMenu>true</howEvaluationContextMenu>
|
||||
<showCommentWithArgumentHint>true</showCommentWithArgumentHint>
|
||||
<statusBarTypeEvaluation>false</statusBarTypeEvaluation>
|
||||
<namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
|
||||
<processPrimaryTypes>true</processPrimaryTypes>
|
||||
<processFunctionArguments>false</processFunctionArguments>
|
||||
<preProcessAllHeaders>true</preProcessAllHeaders>
|
||||
<parseMissingHeaders>false</parseMissingHeaders>
|
||||
<resolveIncludePaths>true</resolveIncludePaths>
|
||||
<alwaysParseInBackground>true</alwaysParseInBackground>
|
||||
<usePermanentCaching>true</usePermanentCaching>
|
||||
<alwaysIncludeNamespaces>false</alwaysIncludeNamespaces>
|
||||
<includePaths>.;</includePaths>
|
||||
<parseMissingHeadersExperimental>false</parseMissingHeadersExperimental>
|
||||
<resolveIncludePathsUsingMakeExperimental>false</resolveIncludePathsUsingMakeExperimental>
|
||||
</codecompletion>
|
||||
<qt>
|
||||
<used>true</used>
|
||||
<version>3</version>
|
||||
<root>/usr/share/qt3</root>
|
||||
<includestyle>3</includestyle>
|
||||
<designerintegration>EmbeddedKDevDesigner</designerintegration>
|
||||
<qmake>/usr/bin/qmake-qt3</qmake>
|
||||
<designer></designer>
|
||||
<designerpluginpaths/>
|
||||
</qt>
|
||||
<creategettersetter>
|
||||
<prefixGet/>
|
||||
<prefixSet>set</prefixSet>
|
||||
<prefixVariable>m_,_</prefixVariable>
|
||||
<parameterName>theValue</parameterName>
|
||||
<inlineGet>true</inlineGet>
|
||||
<inlineSet>true</inlineSet>
|
||||
</creategettersetter>
|
||||
<splitheadersource>
|
||||
<enabled>false</enabled>
|
||||
<synchronize>true</synchronize>
|
||||
<orientation>Vertical</orientation>
|
||||
</splitheadersource>
|
||||
</kdevcppsupport>
|
||||
<ctagspart>
|
||||
<customArguments/>
|
||||
<customTagfilePath/>
|
||||
</ctagspart>
|
||||
</kdevelop>
|
Binary file not shown.
@ -0,0 +1,24 @@
|
||||
<?xml version = '1.0' encoding = 'UTF-8'?>
|
||||
<!DOCTYPE KDevPrjSession>
|
||||
<KDevPrjSession>
|
||||
<DocsAndViews NumberOfDocuments="0" />
|
||||
<pluginList>
|
||||
<kdevdebugger>
|
||||
<breakpointList/>
|
||||
<showInternalCommands value="0" />
|
||||
</kdevdebugger>
|
||||
<kdevastyle>
|
||||
<Extensions ext="*.cpp *.h,*.c *.h,*.cxx *.hxx,*.c++ *.h++,*.cc *.hh,*.C *.H,*.diff,*.inl,*.java,*.moc,*.patch,*.tlh,*.xpm" />
|
||||
<AStyle IndentPreprocessors="0" FillCount="4" PadParenthesesOut="0" IndentNamespaces="1" IndentLabels="1" Fill="Spaces" MaxStatement="40" Brackets="Linux" MinConditional="-1" IndentBrackets="0" PadParenthesesUn="1" BlockBreak="1" KeepStatements="0" KeepBlocks="0" BlockIfElse="0" IndentSwitches="1" PadOperators="1" FStyle="UserDefined" IndentCases="0" FillEmptyLines="0" BracketsCloseHeaders="1" BlockBreakAll="0" PadParenthesesIn="0" IndentClasses="1" IndentBlocks="0" FillForce="1" />
|
||||
</kdevastyle>
|
||||
<kdevsubversion>
|
||||
<subversion base="" />
|
||||
</kdevsubversion>
|
||||
<kdevvalgrind>
|
||||
<executable path="" params="" />
|
||||
<valgrind path="" params="" />
|
||||
<calltree path="" params="" />
|
||||
<kcachegrind path="" />
|
||||
</kdevvalgrind>
|
||||
</pluginList>
|
||||
</KDevPrjSession>
|
@ -0,0 +1,27 @@
|
||||
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
|
||||
<tagfile>
|
||||
<compound kind="dir">
|
||||
<name>/home/marcel/Desktop/d3lphin/</name>
|
||||
<path>/home/marcel/Desktop/d3lphin/</path>
|
||||
<filename>dir_f3e1e220fa3e0777a536c99f4734fd4a.html</filename>
|
||||
<dir>/home/marcel/Desktop/d3lphin/src/</dir>
|
||||
</compound>
|
||||
<compound kind="dir">
|
||||
<name>/home/marcel/Desktop/</name>
|
||||
<path>/home/marcel/Desktop/</path>
|
||||
<filename>dir_c6d579f883d8d96509bfff23d0fea1a8.html</filename>
|
||||
<dir>/home/marcel/Desktop/d3lphin/</dir>
|
||||
</compound>
|
||||
<compound kind="dir">
|
||||
<name>/home/marcel/</name>
|
||||
<path>/home/marcel/</path>
|
||||
<filename>dir_5e5131dca0a3ba03415e99147c2bd315.html</filename>
|
||||
<dir>/home/marcel/Desktop/</dir>
|
||||
</compound>
|
||||
<compound kind="dir">
|
||||
<name>/home/marcel/Desktop/d3lphin/src/</name>
|
||||
<path>/home/marcel/Desktop/d3lphin/src/</path>
|
||||
<filename>dir_320ee444fb4c81592beaecb34d3ab2cd.html</filename>
|
||||
<file>main.cpp</file>
|
||||
</compound>
|
||||
</tagfile>
|
@ -0,0 +1,6 @@
|
||||
# the SUBDIRS is filled automatically by am_edit. If files are
|
||||
# in this directory they are installed into the english dir
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = d3lphin
|
||||
SUBDIRS = $(AUTODIRS)
|
@ -0,0 +1,2 @@
|
||||
KDE_DOCS = d3lphin
|
||||
KDE_LANG = en
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
POFILES = AUTO
|
@ -0,0 +1,745 @@
|
||||
# translation of dolphin.po to
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# Peter Penz <peter.penz@gmx.at>, 2006.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: dolphin\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2006-03-04 12:13+0100\n"
|
||||
"Last-Translator: Peter Penz <peter.penz@gmx.at>\n"
|
||||
"Language-Team: <en@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.2\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "Peter Penz"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "peter.penz@gmx.at"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
msgid "Add Bookmark..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
msgid "Insert Bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Spalten "
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Datum "
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Rechte "
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Eigentümer "
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
#, fuzzy
|
||||
msgid "By Size"
|
||||
msgstr "Größe"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
#, fuzzy
|
||||
msgid "By Date"
|
||||
msgstr "Datum "
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
msgid "The new item name is invalid."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
msgid "Renaming items..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
msgid "1 Folder selected"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
msgid "%1 Folders selected"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr ""
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr ""
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr ""
|
||||
|
||||
#: filterbar.cpp:44
|
||||
msgid "Filter:"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
msgid "Home URL"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
msgid "Start with split view"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
msgid "%1 items selected"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
#, fuzzy
|
||||
msgid "Size:"
|
||||
msgstr "Größe"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr ""
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
msgid "Documentation"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr ""
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
msgid "Rename Items"
|
||||
msgstr ""
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr ""
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
msgid "New name #"
|
||||
msgstr ""
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr ""
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr ""
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr ""
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid ""
|
||||
"The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Left Sidebar"
|
||||
msgstr ""
|
||||
|
||||
msgid "Right Sidebar"
|
||||
msgstr ""
|
||||
|
||||
msgid "Save view properties for each folder"
|
||||
msgstr ""
|
@ -0,0 +1,746 @@
|
||||
# translation of de.po to Deutsch
|
||||
# translation of dolphin.po to
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# Peter Penz <peter.penz@gmx.at>, 2006.
|
||||
# Jannick Kuhr <jannick.kuhr@kdemail.net>, 2007.
|
||||
# Marcel Juhnke <marrat@marrat.homelinux.org>, 2007.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: de\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2007-03-23 23:00+0100\n"
|
||||
"Last-Translator: Marcel Juhnke <marrat@marrat.homelinux.org>\n"
|
||||
"Language-Team: Deutsch\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "Peter Penz"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "peter.penz@gmx.at"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr "Symbole"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr "Hinzufügen ..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr "Bearbeiten ..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr "Nach oben"
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr "Nach unten"
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr "Lesezeichen hinzufügen"
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr "Neues Lesezeichen"
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr "Lesezeichen bearbeiten"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
msgid "Add Bookmark..."
|
||||
msgstr "Lesezeichen hinzufügen ..."
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr "Lesezeichen einfügen ..."
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
msgid "Insert Bookmark"
|
||||
msgstr "Lesezeichen einfügen"
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Spalten"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Berechtigungen"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Eigentümer"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "Symbolgröße"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "Klein"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "Mittel"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "Groß"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "Schriftfamilie:"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "Schriftgröße:"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "An diese Stelle &verschieben"
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "An diese Stelle kopieren"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "Hiermit verknüpfen"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Escape"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "Neuer Ordner"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "Ordnername eingeben:"
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "Ordner %1 angelegt."
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "Ein Ordner mit dem Namen %1 ist bereits vorhanden."
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "Das Anlegen von Ordner %1 ist fehlgeschlagen."
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "Konnte Datei nicht anlegen."
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "Eine Datei mit dem Namen %1 ist bereits vorhanden."
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "Datei %1 wurde angelegt."
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "Das Anlegen der Datei %1 ist fehlgeschlagen."
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "Wollen sie wirklich die %1 selektierten Objekte löschen?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "Wollen sie wirklich '%1' löschen?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "Löschoperation wurde ausgeführt."
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "Eine Datei einfügen"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "%1 Dateien einfügen"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "Kopieroperation wurde ausgeführt."
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "Verschiebeoperation wurde ausgeführt."
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "Verschiebeoperation wurde ausgeführt."
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr "Startverzeichnis"
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr "Speichermedien"
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
msgid "Network"
|
||||
msgstr "Netzwerk"
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr "Hauptverzeichnis"
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr "Mülleimer"
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "Ordner ..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "Umbenennen"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "In den Mülleimer verschieben"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "E&igenschaften"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "Auswahl umkehren"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "Symbole"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "Details"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "Vorschau"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr "nach Name"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
msgid "By Size"
|
||||
msgstr "nach Größe"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
msgid "By Date"
|
||||
msgstr "nach Datum"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "Absteigend"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "Versteckte Dateien anzeigen"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "Ansicht teilen"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr "Pfad bearbeiten"
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr "Navigieren"
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr "Seitenleiste"
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "Ansichtseigenschaften anpassen ..."
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr "Konsole öffnen"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr "Datei suchen ..."
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr "Filterleiste anzeigen"
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr "Dateien vergleichen"
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "Ansichtseigenschaften werden aktualisiert ..."
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "Neu erstellen"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "Ansichtsmodus"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr "Lesezeichen für diesen Ordner hinzufügen"
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "Eigenschaften ..."
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr "Ordner als Lesezeichen hinzufügen"
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "S&onstige ..."
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "Öffnen mit"
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "Öffnen mit ..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "Dolphin-Einstellungen"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "Ansichten"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
msgid "The new item name is invalid."
|
||||
msgstr "Der neue Elementname ist ungültig."
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
msgid "Renaming items..."
|
||||
msgstr "Elemente werden umbenannt ..."
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr "Umbenennen beendet."
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "Umbenennung fehlgeschlagen (Element '%1' existiert bereits)."
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "Datei bereits vorhanden"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "Datei '%1' wurde umbenannt in '%2'."
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "Das Umbenennen der Datei '%1' nach '%2' ist fehlgeschlagen."
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr "Der Pfad ist leer."
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr "Der Pfad '%1' ist ungültig."
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "Ordner wird geladen ..."
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "Ein Element"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 Elemente"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "Ein Ordner"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 Ordner"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "Eine Datei"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 Dateien"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
msgid "1 Folder selected"
|
||||
msgstr "Ein Ordner ausgewählt"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 Ordner ausgewählt"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr "Eine Datei ausgewählt (%1)"
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr "%1 Dateien ausgewählt (%1)"
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr "Symbole:"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr "Name:"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr "Pfad:"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
msgid "Filter:"
|
||||
msgstr "Filter:"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
msgid "Home URL"
|
||||
msgstr "Startseite"
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr "Aktuellen Pfad verwenden"
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr "Standardpfad verwenden"
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr "Standard-Ansichtsmodus"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
msgid "Start with split view"
|
||||
msgstr "Mit geteilter Ansicht starten"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr "Mit editierbarer Navigationsleiste starten"
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "Vorschaugröße"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "Zeilenanzahl:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "Textbreite:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "Gitter"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "Anordnung:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "Links nach rechts"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "Oben nach unten"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "Gitterabstand:"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
msgid "%1 items selected"
|
||||
msgstr "%1 Elemente ausgewählt"
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr "Typ:"
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr "Ordner"
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
msgid "Size:"
|
||||
msgstr "Größe:"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr "Geändert:"
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 Ordner"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "Zu öffnendes Dokument"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr "Dolphin"
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr "Dateimanager"
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr "Betreuer und Entwickler"
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr "Entwickler"
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentation"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr "... für den großartigen Support und die tollen Patches"
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr "... für ihre Patches"
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr "... für ihre Übersetzungen"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr "Sortieren"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Navigationsleiste"
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
msgid "Rename Items"
|
||||
msgstr "Elemente umbenennen"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "Die %1 ausgewählten Elemente werden umbenannt auf:"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
msgid "New name #"
|
||||
msgstr "Neuer Name #"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr "(# wird ersetzt durch aufsteigende Nummern)"
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr "%1% von %2 belegt"
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr "Größe wird abgefragt ..."
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "Rückgängig: %1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "Rückgängigoperation wird ausgeführt ..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "Rückgängigoperation ausgeführt."
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "Wiederherstellen: %1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "Wiederherstellungsoperation wird ausgeführt ..."
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "Wiederherstellungsoperation ausgeführt."
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "Verknüpfung"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "Neuen Ordner anlegen"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "Neue Datei anlegen"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr "Navigieren (Strg+B)"
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr "Pfad editieren (Strg+L)"
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr "Benutzerdefinierter Pfad"
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "Ansichtseigenschaften"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "Ansichtsmodus:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr "Sortierspalte:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "Sortierreihenfolge:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "Aufsteigend"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "Versteckte Dateien anzeigen"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "Ansichteigenschaften zuweisen an:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "Aktuellen Ordner"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "Aktuellen Ordner inklusive aller Unterordner"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "Alle Ordner"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid "The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr ""
|
||||
"Die Ansichtseigenschaften aller Unterordner werden ersetzt. Wollen Sie "
|
||||
"fortsetzen?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr ""
|
||||
"Die Ansichtseigenschaften aller Unterordner werden ersetzt. Wollen Sie "
|
||||
"fortsetzen?"
|
||||
|
||||
msgid "Left Sidebar"
|
||||
msgstr "Linke Seitenleiste"
|
||||
|
||||
msgid "Right Sidebar"
|
||||
msgstr "Rechte Seitenleiste"
|
||||
|
||||
msgid "Save view properties for each folder"
|
||||
msgstr "Ansichtsoptionen für jeden Ordner einzeln speichern"
|
@ -0,0 +1,779 @@
|
||||
# translation of es.po to
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# Nestor Diaz <nestordiaz@equusdigital.com>, 2006.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: es\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2006-06-15 20:21+0200\n"
|
||||
"Last-Translator: Nestor Diaz <nestordiaz@equusdigital.com>\n"
|
||||
"Language-Team: <es@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.2\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr ""
|
||||
"_: NOMBRE DE LOS TRADUCTORES\n"
|
||||
"Néstor Díaz,Nestor Diaz"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr ""
|
||||
"_: EMAIL DE LOS TRADUCTORES\n"
|
||||
"n3storm@grupoikusnet.com,nestordiaz@equusdigital.com"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
#, fuzzy
|
||||
msgid "Icon"
|
||||
msgstr "Iconos"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
#, fuzzy
|
||||
msgid "Location"
|
||||
msgstr "Acciones"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
msgid "Add Bookmark..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr ""
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
msgid "Insert Bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Columnas"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Permisos"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Propietario"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "Tamaño de icono"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "Pequeño"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "Mediano"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "Grande"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "Texto"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "Familia de fuentes:"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "Tamaño de fuente:"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "&Mover aquí"
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "&Copiar aquí"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "&Enlazar aquí"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Escape"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "Nueva Carpeta"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "Introduzca nombre de la carpeta:"
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "Carpeta creado %1."
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "Una carpeta llamada %1 ya existe."
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "La creación de la carpeta %1 ha fallado."
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "No se pudo crear el fichero."
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "Un fichero %1 ya existe."
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "Fichero %1 creado."
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "La creación de lfichero %1 ha fallado."
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "¿Realmente desea borrar los %1 ficheros seleccionados?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "¿Realmente desea borrar '%1'?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "Operación de borrado completada."
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "Pegar 1 fichero"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "Pegar %1 ficheros"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "Operación de pegado completada."
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "Operación de mover completada."
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
#, fuzzy
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "Operación de mover completada."
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "Carpeta..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "Renombrar"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "Mover a la Papelera"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "Prop&iedades"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "Invertir la selección"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "Iconos"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "Detalles"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "Previsualización"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
#, fuzzy
|
||||
msgid "By Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
#, fuzzy
|
||||
msgid "By Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
#, fuzzy
|
||||
msgid "By Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "Descendente"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "Mostrar archivos ocultos"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "Dividir la vista"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "Ajustar propiedades de la vista"
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
#, fuzzy
|
||||
msgid "Open Terminal"
|
||||
msgstr "General"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "Actualizar propiedades de la vista"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "Crear nuevo"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "Modo de vista"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "Propiedades..."
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr ""
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "&Otros"
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "Abrir con"
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "Abrir con..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "Acciones"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "Preferencias de Dolphin"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "Modos de vista"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
msgid "The new item name is invalid."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
msgid "Renaming items..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
#, fuzzy
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "Un fichero %1 ya existe."
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "El archivo ya existe"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "Archivo '%1' remobrado a '%2'."
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "El renombrado de archivo '%1' a '%2' ha fallado."
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "Cargando carpeta..."
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "1 Elemento"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 Elementos"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "1 Carpeta"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 Carpetas"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "1 Archivo"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 Archivos"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
#, fuzzy
|
||||
msgid "1 Folder selected"
|
||||
msgstr "%1 Carpetas"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
#, fuzzy
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 Carpetas"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
#, fuzzy
|
||||
msgid "Icon:"
|
||||
msgstr "Iconos"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
#, fuzzy
|
||||
msgid "Name:"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
#, fuzzy
|
||||
msgid "Location:"
|
||||
msgstr "Acciones"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
#, fuzzy
|
||||
msgid "Filter:"
|
||||
msgstr "1 Archivo"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
msgid "Home URL"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr ""
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
#, fuzzy
|
||||
msgid "Default View Mode"
|
||||
msgstr "Modo de vista"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
#, fuzzy
|
||||
msgid "Start with split view"
|
||||
msgstr "Dividir la vista"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "Tamaño de previsualización"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "Número de líneas:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "Ancho texto:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "Rejilla"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "Ordenamiento:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "Izquierda a derecha"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "De arriba a abajo"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "Espaciado de la rejilla:"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
#, fuzzy
|
||||
msgid "%1 items selected"
|
||||
msgstr "%1 Carpetas"
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
#, fuzzy
|
||||
msgid "Size:"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr ""
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
#, fuzzy
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 Carpetas"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "Documento a abrir"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr "Dolphin"
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
#, fuzzy
|
||||
msgid "Documentation"
|
||||
msgstr "Documento a abrir"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr ""
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
#, fuzzy
|
||||
msgid "Rename Items"
|
||||
msgstr "Renombrar"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
#, fuzzy
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "¿Realmente desea borrar los %1 ficheros seleccionados?"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
#, fuzzy
|
||||
msgid "New name #"
|
||||
msgstr "Renombrar"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "Deshacer: %1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "Ejecutando operación de deshacer..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "Operación de deshacer ejecutada."
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "Rehacer: %1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "Ejecutando operación de rehacer..."
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "Operación de rehacer ejecutada."
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "Enlace"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "Crear Nueva Carpeta"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "Crear Nuevo Archivo"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr ""
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr ""
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "Ver Propiedades"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "Modo de Vista:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
#, fuzzy
|
||||
msgid "Sorting:"
|
||||
msgstr "Ordenar columna:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "Ordenación:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "Ascendente"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "Mostrar archivos ocultos"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "Aplicar propiedades de vista a:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "Carpeta actual"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "Carpeta actual incluídas todas las subcarpetas"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "Todas las carpetas"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr ""
|
||||
"Las propiedades de la vista de todas las subcarpetas será reemplazada. "
|
||||
"¿Desea continuar?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr ""
|
||||
"Las propiedades de la vista de todas las subcarpetas será reemplazada. "
|
||||
"¿Desea continuar?"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Unknown size"
|
||||
#~ msgstr "Tamaño de fuente:"
|
||||
|
||||
#~ msgid "Sort column:"
|
||||
#~ msgstr "Ordenar columna:"
|
||||
|
||||
#~ msgid "A KDE Application"
|
||||
#~ msgstr "Una apliación KDE"
|
||||
|
||||
#~ msgid "Edit path with keyboard"
|
||||
#~ msgstr "Editar la ruta con el teclado"
|
@ -0,0 +1,732 @@
|
||||
# translation of et.po to Estonian
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# Ain Vagula <avagula@gmail.com>, 2006.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: et\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2006-12-23 23:17+0200\n"
|
||||
"Last-Translator: Ain Vagula <avagula@gmail.com>\n"
|
||||
"Language-Team: Estonian <et@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "Ain Vagula"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "avagula@gmail.com"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr "Ikoon"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "Nimi"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr "Asukoht"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr "Lisa..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr "Redigeeri..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr "Liiguta üles"
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr "Liiguta alla"
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr "Lisa järjehoidja"
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr "Uus järjehoidja"
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr "Muuda järjehoidjaid"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
msgid "Add Bookmark..."
|
||||
msgstr "Lisa järjehoidja..."
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr "Lisa järjehoidja..."
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
msgid "Insert Bookmark"
|
||||
msgstr "Lisa järjehoidja"
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Veerud"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Kuupäev"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Õigused"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Omanik"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Rühm"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "Ikooni suurus"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "Väike"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "Keskmine"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "Suur"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "Tekst"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "Fondipere:"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "Fondi suurus:"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "&Liiguta siia"
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "&Kopeeri siia"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "&Lingi siia"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Katkesta"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "Uus kataloog"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "Sisesta kataloogi nimi:"
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "Loodi kataloog %1."
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "Kataloog nimega %1 eksisteerib juba."
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "Kataloogi %1 loomine nurjus."
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "Faili ei õnnestunud luua."
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "Fail nimega %1 eksisteerib juba."
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "Loodi fail %1."
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "Faili %1 loomine nurjus."
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "Soovid sa tõesti kustutada %1 valitud elementi?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "Kas tõesti kustutada '%1'?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "Kustutamine on lõpetatud."
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "1 faili asetamine"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "%1 faili asetamine"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "Kopeerimine on lõpetatud."
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "Liigutamine on lõpetatud."
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "Prügikasti liigutamine on lõpetatud."
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr "Kodu"
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr "Andmekandja"
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
msgid "Network"
|
||||
msgstr "Võrk"
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr "Juurkataloog"
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr "Prügikast"
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "Kataloog..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "Muuda nime"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "Liiguta prügikasti"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "Oma&dused"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "Muuda valik vastupidiseks"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "Ikoonid"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "Üksikasjad"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "Eelvaatlus"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr "Nime järgi"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
msgid "By Size"
|
||||
msgstr "Suuruse järgi"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
msgid "By Date"
|
||||
msgstr "Kuupäeva järgi"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "Kahanev"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "Peidetud failide näitamine"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "Vaate tükeldamine"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr "Asukoha redigeerimine"
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr "Lehitse"
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr "Külgriba"
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "Vaate omaduste kohandamine..."
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr "Ava terminal"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr "Otsi faili..."
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr "Filtririba kuvamine"
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr "Võrdle faile"
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "Vaate omaduste uuendamine..."
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "Loo uus"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "Vaaterežiim"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr "Lisa kataloog järjehoidjatesse"
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "Omadused..."
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr "Lisa kataloog järjehoidjana"
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "&Muu..."
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "Ava kasutades"
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "Ava kasutades..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "Toimingud"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "Dolphini eelistused"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "Üldine"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "Vaaterežiimid"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
msgid "The new item name is invalid."
|
||||
msgstr "Uue elemendi nimi on vigane."
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
msgid "Renaming items..."
|
||||
msgstr "Elementide nimede muutmine..."
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr "Nimede muutmine on lõpetatud."
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "Nime muutmine nurjus (element '%1' on juba olemas)."
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "Fail on juba olemas"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "Faili '%1' uus nimi on '%2'."
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "Failile '%1' nime '%2' omistamine nurjus."
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr "Asukoht on tühi."
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr "Asukoht '%1' on vigane."
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "Kataloogi laadimine..."
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "1 element"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 elementi"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "1 kataloog"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 kataloogi"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "1 fail"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 faili"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
msgid "1 Folder selected"
|
||||
msgstr "1 kataloog on valitud"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 kataloogi on valitud"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr "1 fail on valitud (%1)"
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr "%1 faili on valitud (%1)"
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr "Ikoon:"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr "Nimi:"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr "Asukoht:"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
msgid "Filter:"
|
||||
msgstr "Filter:"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
msgid "Home URL"
|
||||
msgstr "Kodulehe URL"
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr "Praeguse asukoha kasutamine"
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr "Vaikimisi asukoha kasutamine"
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr "Vaikimisi vaaterežiim"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
msgid "Start with split view"
|
||||
msgstr "Käivitatakse tükeldatud vaates"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr "Käivitatakse redigeeritava navigeerimisribaga"
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "Eelvaate suurus"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "Ridade arv:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "Teksti laius:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "Alusvõrk"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "Korraldus:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "Paremalt vasakule"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "Ülevalt alla"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "Alusvõrgu samm:"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
msgid "%1 items selected"
|
||||
msgstr "%1 elementi on valitud"
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr "Tüüp:"
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr "Kataloog"
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
msgid "Size:"
|
||||
msgstr "Suurus:"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr "Muudetud:"
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 (kataloog)"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "Avatav dokument"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr "Dolphin"
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr "Failihaldur"
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr "Hooldaja ja arendaja"
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr "Arendaja"
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentatsioon"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr "... suurepärase toe ja paikade jaoks"
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr "... paikade jaoks"
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr "... tõlgete jaoks"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr "Sordi"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Navigeerimisriba"
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
msgid "Rename Items"
|
||||
msgstr "Elementide nimede muutmine"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "%1 valitud elemendi uus nimi:"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
msgid "New name #"
|
||||
msgstr "Uus nimi #"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr "(# asendatakse kasvavate arvudega)"
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr "%1% %2-st kasutusel"
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr "Suuruse tuvastamine..."
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "Võta tagasi: %1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "Tühistamise rakendamine..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "Tühistamine rakendatud."
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "Tee uuesti: %1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "Taastamise rakendamine..."
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "Taastamine rakendatud."
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "Viit"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "Loo uus kataloog"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "Loo uus fail"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr "Lehitse (Ctrl+B, Esc)"
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr "Redigeeri asukohta (Ctrl+L)"
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr "Muu asukoht"
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "Vaate omadused"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "Vaaterežiim:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr "Sortimine:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "Sortimisjärjestus:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "Kasvav"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "Näidatakse peidetud faile"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "Vaate omaduste rakendamine:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "Aktiivne kataloog"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "Aktiivne kataloog koos alamkataloogidega"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "Kõik kataloogid"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid "The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr "Kõikide kataloogide vaate omadused asendatakse. Kas soovid jätkata?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr "Kõikide alamkataloogide vaate omadused asendatakse. Kas soovid jätkata?"
|
||||
|
@ -0,0 +1,754 @@
|
||||
# translation of fr.po to Français
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# Peter Penz <peter.penz@gmx.at>, 2006.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fr\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2006-10-14 16:48+0200\n"
|
||||
"Last-Translator: Stephane Lesimple <speed47@speed47.net>\n"
|
||||
"Language-Team: Français <fr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "Stéphane Lesimple, Patrice Tremblay"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "speed47@speed47.net, tremblaypatrice@yahoo.fr"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr "Icône"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr "Emplacement"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr "Ajouter..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr "Modifier..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr "Monter"
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr "Descendre"
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr "Ajouter un signet"
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr "Nouveau signet"
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr "Modifier un signet"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
#, fuzzy
|
||||
msgid "Add Bookmark..."
|
||||
msgstr "Ajouter un signet"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
#, fuzzy
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr "Modifier un signet"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
#, fuzzy
|
||||
msgid "Insert Bookmark"
|
||||
msgstr "Modifier un signet"
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Colonnes"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Permissions"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Propriétaire"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Groupe"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "Dimension des icônes"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "Petit"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "Moyen"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "Grand"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "Texte"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "Famille de polices :"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "Taille de la police :"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "&Déplacer ici"
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "&Copier ici"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "&Lier ici"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Echap"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "Nouveau dossier"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "Entrer le nom du dossier:"
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "Dossier %1 créé."
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "Un dossier nommé %1 existe déjà."
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "La création du dossier %1 a échoué."
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "Erreur de création du fichier."
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "Un fichier nommé %1 existe déjà."
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "Fichier %1 créé."
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "La création du fichier %1 a échoué."
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "Voulez-vous vraiment supprimer les %1 objets sélectionnés ?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "Voulez-vous vraiment supprimer '%1' ?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "Opération de suppression terminée."
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "Coller 1 fichier"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "Coller %1 fichiers"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "Opération de copie terminée."
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "Opération de déplacement terminée."
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "Opération de déplacement vers la corbeille terminée."
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr "Dossier personnel"
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr "Média de stockage"
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
msgid "Network"
|
||||
msgstr "Réseau"
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr "Racine"
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "Dossier..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "Renommer"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "Mettre à la corbeille"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "Propr&iétés"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "Inverser la sélection"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "Icônes"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "Détails"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "Aperçus"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr "Par Nom"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
msgid "By Size"
|
||||
msgstr "Par Taille"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
msgid "By Date"
|
||||
msgstr "Par Date"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "Descendant"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "Afficher les fichiers cachés"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "Vue séparée"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr "Modifier l'emplacement"
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr "Parcourir"
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "Ajuster les propriétés d'affichage..."
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr "Ouvrir un terminal"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr "Chercher un fichier..."
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr "Comparer des fichiers"
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "Mise-à-jour des propriétés de la vue..."
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "Créer un nouveau"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "Type d'affichage"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr "Ajouter un signet"
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "Propriétés..."
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr "Ajouter le dossier comme signet"
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "&Autre..."
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "Ouvrir avec"
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "Ouvrir avec..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "Préférences de Dolphin"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "Types d'affichage"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
#, fuzzy
|
||||
msgid "The new item name is invalid."
|
||||
msgstr "L'emplacement '%1' est invalide."
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
#, fuzzy
|
||||
msgid "Renaming items..."
|
||||
msgstr "Récupération de la taille..."
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
#, fuzzy
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "Un fichier nommé %1 existe déjà."
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "Le fichier existe déjà"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "Fichier '%1' renommé en '%2'."
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "Echec du renommage du fichier '%1' en '%2'."
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr "L'emplacement est vide."
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr "L'emplacement '%1' est invalide."
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "Chargement du dossier..."
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "1 objet"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 objets"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "1 dossier"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 dossiers"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "1 fichier"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 fichiers"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
msgid "1 Folder selected"
|
||||
msgstr "1 dossier sélectioné"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 dossiers sélectionnés"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr "1 fichier sélectionné (%1)"
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr "%1 fichiers sélectionnés (%1)"
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr "Icône :"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr "Nom :"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr "Emplacement:"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
#, fuzzy
|
||||
msgid "Filter:"
|
||||
msgstr "1 fichier"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
msgid "Home URL"
|
||||
msgstr "Emplacement de démarrage"
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr "Utiliser l'emplacement actuel"
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr "Utiliser l'emplacement par défaut"
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr "Type d'affichage par défaut"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
msgid "Start with split view"
|
||||
msgstr "Démarrer avec deux vues séparées"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr "Démarrer avec la barre de navigation"
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "Taille de l'aperçu"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "Nombre de lignes :"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "Largeur du texte :"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "Grille"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "Arrangement :"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "De gauche à droite"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "Du haut vers le bas"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "Espacement de la grille :"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
#, fuzzy
|
||||
msgid "%1 items selected"
|
||||
msgstr "%1 dossiers sélectionnés"
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
#, fuzzy
|
||||
msgid "Size:"
|
||||
msgstr "Par Taille"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr ""
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 (Dossier)"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "Document à ouvrir"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr "Dolphin"
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr "Gestionnaire de fichiers"
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr "Mainteneur et développeur"
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr "Développeur"
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
#, fuzzy
|
||||
msgid "Documentation"
|
||||
msgstr "Document à ouvrir"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr "Trier"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Barre de navigation"
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
#, fuzzy
|
||||
msgid "Rename Items"
|
||||
msgstr "Renommer"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
#, fuzzy
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "Voulez-vous vraiment supprimer les %1 objets sélectionnés ?"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
#, fuzzy
|
||||
msgid "New name #"
|
||||
msgstr "Renommer"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr "%1% sur %2 utilisés"
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr "Récupération de la taille..."
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "Annuler : %1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "Annulation en cours..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "Annulation effectuée."
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "Refaire : %1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "Ré-effectue..."
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "Opération ré-effectuée."
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "Lien"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "Créer un nouveau dossier"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "Créer un nouveau fichier"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr "Parcourir (Ctrl+B, Echap)"
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr "Modifier l'emplacement (Ctrl+L)"
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "Voir Propriétés"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "Type d'affichage :"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr "Tri :"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "Ordre de tri :"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "Ascendant"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "Afficher les fichiers cachés"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "Appliquer les propriétés d'affichage à :"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "Dossier actuel"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "Dossier actuel et ses sous-dossiers"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "Tout les dossiers"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid ""
|
||||
"The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr ""
|
||||
"Les propriétés d'affichage de tous les dossiers vont être remplacés. Voulez-"
|
||||
"vous continuer ?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr ""
|
||||
"Les propriétés d'affichage de tous les sous-dossiers vont être remplacés. "
|
||||
"Voulez-vous continuer ?"
|
||||
|
||||
#~ msgid "Remove..."
|
||||
#~ msgstr "Supprimer..."
|
||||
|
||||
#~ msgid "Unknown size"
|
||||
#~ msgstr "Taille inconnue"
|
@ -0,0 +1,753 @@
|
||||
# translation of he.po to Hebrew
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# itai alter <itaialter@gmail.com>, 2006.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: he\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2006-10-21 04:36+0200\n"
|
||||
"Last-Translator: itai alter <itaialter@gmail.com>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.2\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "איתי אלתר - itai alter"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "itaialter@gmail.com"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr "אייקון"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "שם"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr "מיקום"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr "הוסף..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr "ערוך..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr "הזז מעלה"
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr "הזז מטה"
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr "הוסף סימנייה"
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr "סימנייה חדשה"
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr "ערוך סימנייה"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
#, fuzzy
|
||||
msgid "Add Bookmark..."
|
||||
msgstr "הוסף סימנייה"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
#, fuzzy
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr "ערוך סימנייה"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
#, fuzzy
|
||||
msgid "Insert Bookmark"
|
||||
msgstr "ערוך סימנייה"
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "עמודות"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "תאריך"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "הרשאות"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "בעלים"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "קבוצה"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "גודל אייקון"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "קטן"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "בינוני"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "גדול"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "טקסט"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "משפחת גופן"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "גודל גופן"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "&הזז לכאן "
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "&העתק לכאן"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "&צור קישור כאן"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Escape"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "תיקייה חדשה"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "הכנס שם תיקייה: "
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "נוצרה תיקייה %1"
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "תיקייה בשם %1 כבר קיימת"
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "יצירת תיקייה %1 נכשלה"
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "נכשלה יצירת הקובץ"
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "קובץ בשם %1 כבר קיים"
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "נוצר קובץ %1 "
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "יצירת קובץ %1 נכשלה"
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "האם באמת ברצונך למחוק את %1 הפריטים המסומנים?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "האם באמת ברצונך למחוק את '%1'?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "פעולת המחיקה הושלמה"
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "העתק קובץ אחד"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "העתק %1 קבצים"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "פעולת ההעתקה הושלמה"
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "פעולת ההעברה הושלמה"
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "ההעברה לפח האשפה הושלמה"
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr "בית"
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
#, fuzzy
|
||||
msgid "Network"
|
||||
msgstr "סימנייה חדשה"
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "תיקייה..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "שנה שם"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "העבר לפח האשפה"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "מאפיינים"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "הפוך בחירה"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "אייקונים"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "פרטים"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "תצוגה מקדימה"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr "לפי שם"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
msgid "By Size"
|
||||
msgstr "לפי גודל"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
msgid "By Date"
|
||||
msgstr "לפי תאריך"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "יורד"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "הראה קבצים חבויים"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "מראה מפוצל"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr "ערוך מיקום"
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr "עיין"
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "התאם מאפייני מראה"
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr "פתח טרמינל"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr "מצא קובץ..."
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr "השווה בין קבצים"
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "מעדכן מאפייני מראה"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "צור חדש"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "מצב מראה"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr "סמן את התיקייה הנוכחית"
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "מאפיינים..."
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr "הוסף תיקייה כסימנייה"
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "&אחר..."
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "פתח באמצעות..."
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "פתח באמצעות..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "פעולות"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "הגדרות דולפין"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "כללי"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "מצבי מראה"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
#, fuzzy
|
||||
msgid "The new item name is invalid."
|
||||
msgstr "המיקום '%1' אינו זמין"
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
msgid "Renaming items..."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
#, fuzzy
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "קובץ בשם %1 כבר קיים"
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "הקובץ כבר קיים"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "שם קובץ שונה מ-'%1' ל-%2'"
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "שינוי שם הקובץ מ-'%1' ל-'%2' נכשל"
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr "המיקום ריק"
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr "המיקום '%1' אינו זמין"
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "טוען ספרייה..."
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "פריט אחד"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 פריטים"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "תיקייה אחת"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 תיקיות"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "קובץ אחד"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 קבצים"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
#, fuzzy
|
||||
msgid "1 Folder selected"
|
||||
msgstr "%1 תיקיות"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
#, fuzzy
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 תיקיות"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr "אייקון:"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr "שם:"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr "מיקום:"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
#, fuzzy
|
||||
msgid "Filter:"
|
||||
msgstr "קובץ אחד"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
#, fuzzy
|
||||
msgid "Home URL"
|
||||
msgstr "בית"
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr "השתמש במיקום הנוכחי"
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr "השתמש במיקום ברירת המחדל"
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr "מצב מראה ברירת מחדל"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
#, fuzzy
|
||||
msgid "Start with split view"
|
||||
msgstr "מראה מפוצל"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr ""
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "גודל תצוגה מקדימה"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "מספר שורות:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "רוחב טקסט:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "רשת (גריד)"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "סידור"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "משמאל לימין"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "מלמעלה למטה"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "ריווח רשת"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
msgid "%1 items selected"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
#, fuzzy
|
||||
msgid "Size:"
|
||||
msgstr "גודל"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr ""
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 (תיקייה)"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "מסמך לפתיחה"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr "דולפין"
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr "מנהל קבצים"
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
#, fuzzy
|
||||
msgid "Documentation"
|
||||
msgstr "מסמך לפתיחה"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr "מיון"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr "סרגל ניווט"
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
#, fuzzy
|
||||
msgid "Rename Items"
|
||||
msgstr "שנה שם"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
#, fuzzy
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "האם באמת ברצונך למחוק את %1 הפריטים המסומנים?"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
#, fuzzy
|
||||
msgid "New name #"
|
||||
msgstr "שנה שם"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr ""
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "בטל: %1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "מבצע פעולת ביטול..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "בוצעה פעולת ביטול"
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "חזור על: %1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "מבצע פעולת חזרה על"
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "בוצעה פעולת חזרה על"
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "קישור"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "צור תיקייה חדשה"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "צור קובץ חדש"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr "עיין (Ctrl+B, Escape)"
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr "ערוך מיקום (Ctrl+L)"
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "הראה מאפיינים"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "מצב מראה:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr "מיון:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "סדר מיון"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "עולה"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "הראה קבצים חבויים"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "החל מאפייני מראה ל:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "תיקייה נוכחית"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "תיקייה נוכחית וכל תת-התיקיות"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "כל התיקיות"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid ""
|
||||
"The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr "מאפייני המראה של כל התיקיות יוחלפו. האם להמשיך?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr "מאפייני המראה של כל תת-התיקיות יוחלפו. האם להמשיך?"
|
||||
|
||||
#~ msgid "Remove..."
|
||||
#~ msgstr "הסר..."
|
||||
|
||||
#~ msgid "Sort column:"
|
||||
#~ msgstr "מיין עמודה"
|
@ -0,0 +1,755 @@
|
||||
# translation of it.po to
|
||||
# translation of dolphin.po to
|
||||
# This file is put in the public domain.
|
||||
#
|
||||
# Peter Penz <peter.penz@gmx.at>, 2006.
|
||||
# Stefano <xgotux@gmail.com>, 2006.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: it\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2006-11-28 22:10+0100\n"
|
||||
"PO-Revision-Date: 2006-10-16 23:11+0200\n"
|
||||
"Last-Translator: Stefano <xgotux@gmail.com>\n"
|
||||
"Language-Team: <it@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "Stefano Faraone"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "xgotux@gmail.com"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr "Icona"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "Nome"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr "Locazione"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr "Aggiungi..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr "Modifica..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr "Sposta su"
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr "Sposta giu"
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr "Aggiungi segnalibro"
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr "Nuovo segnalibro"
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr "Modifica segnalibri"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
#, fuzzy
|
||||
msgid "Add Bookmark..."
|
||||
msgstr "Aggiungi segnalibro"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
#, fuzzy
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr "Modifica segnalibri"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
#, fuzzy
|
||||
msgid "Insert Bookmark"
|
||||
msgstr "Modifica segnalibri"
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Colonne"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Permessi"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Proprietario"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Gruppo"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "Dimensione icone"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "Piccole"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "Medie"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "Grandi"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "Testo"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "Carattere"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "Dimensione carattere"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "&Sposta qui"
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "&Copia qui"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "&Collega qui"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Esci"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "Nuova cartella"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "Inserisci il nome della cartella"
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "Cartella %1 creata"
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "Una cartella con il nome %1 esiste già."
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "Creazione della cartella %1 fallita."
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "Non è possibile creare il file."
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "Un file con il nome %1 esiste già."
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "Il file %1 è stato creato."
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "Creazione del file %1 fallita."
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "Vuoi veramente eliminare i %1 oggetti selezionati?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "Vuoi veramente eliminare %1?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "Eliminazione completata."
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "Incolla 1 file"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "Incolla %1 file"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "Copia completata."
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "Spostamento completato."
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "Cestinatura completata."
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
#, fuzzy
|
||||
msgid "Network"
|
||||
msgstr "Nuovo segnalibro"
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "Cartella..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "Rinomina"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "Sposta nel cestino"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "Propr&ietà"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "Inverti selezione"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "Icone"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "Dettagli"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "Anteprima"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr "Per nome"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
msgid "By Size"
|
||||
msgstr "Per dimensione"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
msgid "By Date"
|
||||
msgstr "Per data"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "Discendente"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "Mostra i file nascosti"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "Dividi la vista"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr "Modifica la locazione"
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr "Esplora"
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "Imposta la visualizzazione"
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr "Apri un terminale"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr "Cerca..."
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr ""
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr "Compara i file"
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "Aggiornamento proprietà visualizzazione"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "Crea nuovo"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "Vista"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr "Aggiungi ai segnalibri"
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "Proprietà"
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
#, fuzzy
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr "Aggiungi segnalibro"
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "&Altro"
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "Apri con"
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "Apri con..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "Azioni"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "Preferenze Dolphin"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "Vista"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
#, fuzzy
|
||||
msgid "The new item name is invalid."
|
||||
msgstr "La locazione %1 non è valida"
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
#, fuzzy
|
||||
msgid "Renaming items..."
|
||||
msgstr "Calcolo dimensioni..."
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr ""
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
#, fuzzy
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "Un file con il nome %1 esiste già."
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "Il file esiste già"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "Rinomino il file %1 a %2"
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "Processo fallito"
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr "La locazione è vuota"
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr "La locazione %1 non è valida"
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "Carico l' indirizzo"
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "1 elemento"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 elementi"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "1 cartella"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 cartelle"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "1 file"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 file"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
msgid "1 Folder selected"
|
||||
msgstr "1 Cartella selezionata"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 Cartelle selezionate"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr "1 File selezionato (%1)"
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr "%1 File selezionati (%1)"
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr "Icona:"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr "Nome:"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr "Locazione:"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
#, fuzzy
|
||||
msgid "Filter:"
|
||||
msgstr "1 file"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
#, fuzzy
|
||||
msgid "Home URL"
|
||||
msgstr "Home"
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr "Usa la locazione corrente"
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr "Usa la locazione standard"
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr "Vista standard"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
msgid "Start with split view"
|
||||
msgstr "Avvia con la finestra divisa"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr "Avvia con la barra degli indirizzi editabile"
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "Dimensioni anteprima"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "Numero di linee"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "Larghezza testo:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "Griglia"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "Allineamento:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "Da sinistra a destra"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "Dall 'alto in basso"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "Spaziatura griglia"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
#, fuzzy
|
||||
msgid "%1 items selected"
|
||||
msgstr "%1 Cartelle selezionate"
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
#, fuzzy
|
||||
msgid "Size:"
|
||||
msgstr "Per dimensione"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr ""
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 (Cartella)"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "Documento da aprire"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
#, fuzzy
|
||||
msgid "Documentation"
|
||||
msgstr "Documento da aprire"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr "Disponi"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Barra di navigazione"
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
#, fuzzy
|
||||
msgid "Rename Items"
|
||||
msgstr "Rinomina"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
#, fuzzy
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "Vuoi veramente eliminare i %1 oggetti selezionati?"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
#, fuzzy
|
||||
msgid "New name #"
|
||||
msgstr "Rinomina"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr ""
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr "%1% di %2 usati"
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr "Calcolo dimensioni..."
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "Annulla:%1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "Annullamento in corso..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "Annullamento completato."
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "Rifai:%1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "Operazione in corso..."
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "Operazione completata."
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "Collegamento"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "Crea una nuova cartella"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "Crea un nuovo file"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr "Esplora (Ctrl+B, Escape)"
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr "Modifica la locazione (Ctrl+L)"
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr ""
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "Proprietà vista"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "Modo vista"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr "Disposizione:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "Ordinamento"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "Ascendente"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "Mostra i file nascosti"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "Applica le proprietà vista a:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "Cartella corrente"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "Cartella corrente incluse tutte le sottocartelle"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "Tutte le cartelle"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid ""
|
||||
"The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr "Le proprietà vista saranno sovrascritte. Vuoi continuare?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr "Le proprietà vista saranno sovrascritte. Vuoi continuare?"
|
||||
|
||||
#~ msgid "Remove..."
|
||||
#~ msgstr "Rimuovi..."
|
||||
|
||||
#~ msgid "Unknown size"
|
||||
#~ msgstr "Dimensione sconosciuta"
|
@ -0,0 +1,738 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# This file is put in the public domain.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: dolphin-0.8\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-02-06 20:39-0500\n"
|
||||
"PO-Revision-Date: 2004-08-08 19:39+0200\n"
|
||||
"Last-Translator: Piotr Maliński <riklaunim@gmail.com>\n"
|
||||
"Language-Team: <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: _translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr "Piotr Maliński"
|
||||
|
||||
#: _translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr "riklaunim@gmail.com"
|
||||
|
||||
#: bookmarkssettingspage.cpp:57
|
||||
msgid "Icon"
|
||||
msgstr "Ikona"
|
||||
|
||||
#: bookmarkssettingspage.cpp:58
|
||||
msgid "Name"
|
||||
msgstr "Nazwa"
|
||||
|
||||
#: bookmarkssettingspage.cpp:59
|
||||
msgid "Location"
|
||||
msgstr "Położenie"
|
||||
|
||||
#: bookmarkssettingspage.cpp:76
|
||||
msgid "Add..."
|
||||
msgstr "Dodaj..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:81 bookmarkssidebarpage.cpp:114
|
||||
msgid "Edit..."
|
||||
msgstr "Edytuj..."
|
||||
|
||||
#: bookmarkssettingspage.cpp:91
|
||||
msgid "Move Up"
|
||||
msgstr "W górę"
|
||||
|
||||
#: bookmarkssettingspage.cpp:96
|
||||
msgid "Move Down"
|
||||
msgstr "W dół"
|
||||
|
||||
#: bookmarkssettingspage.cpp:196 bookmarkssidebarpage.cpp:170
|
||||
msgid "Add Bookmark"
|
||||
msgstr "Dodaj Zakładkę"
|
||||
|
||||
#: bookmarkssettingspage.cpp:197
|
||||
msgid "New bookmark"
|
||||
msgstr "Nowa Zakładka"
|
||||
|
||||
#: bookmarkssettingspage.cpp:224 bookmarkssidebarpage.cpp:149
|
||||
msgid "Edit Bookmark"
|
||||
msgstr "Edytuj Zakładki"
|
||||
|
||||
#: bookmarkssidebarpage.cpp:110
|
||||
msgid "Add Bookmark..."
|
||||
msgstr "Dodaj Zakładkę..."
|
||||
|
||||
#: bookmarkssidebarpage.cpp:113
|
||||
msgid "Insert Bookmark..."
|
||||
msgstr "Wstaw Zakładkę..."
|
||||
|
||||
#: bookmarkssidebarpage.cpp:125
|
||||
msgid "Insert Bookmark"
|
||||
msgstr "Wstaw Zakładkę"
|
||||
|
||||
#: detailsviewsettingspage.cpp:60
|
||||
msgid "Columns"
|
||||
msgstr "Kolumny"
|
||||
|
||||
#: detailsviewsettingspage.cpp:65
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
#: detailsviewsettingspage.cpp:68
|
||||
msgid "Permissions"
|
||||
msgstr "Uprawnienia"
|
||||
|
||||
#: detailsviewsettingspage.cpp:71
|
||||
msgid "Owner"
|
||||
msgstr "Właściciel"
|
||||
|
||||
#: detailsviewsettingspage.cpp:74
|
||||
msgid "Group"
|
||||
msgstr "Grupa"
|
||||
|
||||
#: detailsviewsettingspage.cpp:78 iconsviewsettingspage.cpp:69
|
||||
msgid "Icon Size"
|
||||
msgstr "Rozmiar Ikony"
|
||||
|
||||
#: detailsviewsettingspage.cpp:81 iconsviewsettingspage.cpp:77
|
||||
#: iconsviewsettingspage.cpp:99 iconsviewsettingspage.cpp:133
|
||||
#: iconsviewsettingspage.cpp:150
|
||||
msgid "Small"
|
||||
msgstr "Mała"
|
||||
|
||||
#: detailsviewsettingspage.cpp:82 iconsviewsettingspage.cpp:134
|
||||
#: iconsviewsettingspage.cpp:151
|
||||
msgid "Medium"
|
||||
msgstr "Średnia"
|
||||
|
||||
#: detailsviewsettingspage.cpp:83 iconsviewsettingspage.cpp:83
|
||||
#: iconsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:135
|
||||
#: iconsviewsettingspage.cpp:152
|
||||
msgid "Large"
|
||||
msgstr "Duża"
|
||||
|
||||
#: detailsviewsettingspage.cpp:105 iconsviewsettingspage.cpp:115
|
||||
msgid "Text"
|
||||
msgstr "Tekst"
|
||||
|
||||
#: detailsviewsettingspage.cpp:109 iconsviewsettingspage.cpp:119
|
||||
msgid "Font family:"
|
||||
msgstr "Czcionki:"
|
||||
|
||||
#: detailsviewsettingspage.cpp:113 iconsviewsettingspage.cpp:123
|
||||
msgid "Font size:"
|
||||
msgstr "Rozmiar czcionki:"
|
||||
|
||||
#: dolphin.cpp:127
|
||||
msgid "&Move Here"
|
||||
msgstr "&Przenieś Tutaj"
|
||||
|
||||
#: dolphin.cpp:128
|
||||
msgid "&Copy Here"
|
||||
msgstr "&Skopiuj Tutaj"
|
||||
|
||||
#: dolphin.cpp:129
|
||||
msgid "&Link Here"
|
||||
msgstr "&Linkuj Tutaj"
|
||||
|
||||
#: dolphin.cpp:132
|
||||
msgid "Escape"
|
||||
msgstr "Wyjdź"
|
||||
|
||||
#: dolphin.cpp:351 dolphin.cpp:353 dolphin.cpp:357
|
||||
msgid "New Folder"
|
||||
msgstr "Nowy Folder"
|
||||
|
||||
#: dolphin.cpp:358
|
||||
msgid "Enter folder name:"
|
||||
msgstr "Podaj nazwę:"
|
||||
|
||||
#: dolphin.cpp:383
|
||||
msgid "Created folder %1."
|
||||
msgstr "Stworzono folder %1."
|
||||
|
||||
#: dolphin.cpp:393
|
||||
msgid "A folder named %1 already exists."
|
||||
msgstr "Folder o nazwie %1 już istnieje"
|
||||
|
||||
#: dolphin.cpp:397
|
||||
msgid "Creating of folder %1 failed."
|
||||
msgstr "Błąd tworzenia foldera %1."
|
||||
|
||||
#: dolphin.cpp:434
|
||||
msgid "Could not create file."
|
||||
msgstr "Nie mogę utworzyć pliku"
|
||||
|
||||
#: dolphin.cpp:478
|
||||
msgid "A file named %1 already exists."
|
||||
msgstr "Plik o nazwie %1 już istnieje"
|
||||
|
||||
#: dolphin.cpp:488
|
||||
msgid "Created file %1."
|
||||
msgstr "Stworzono plik %1."
|
||||
|
||||
#: dolphin.cpp:498
|
||||
msgid "Creating of file %1 failed."
|
||||
msgstr "Tworzenie pliku %1 nie udało się."
|
||||
|
||||
#: dolphin.cpp:527
|
||||
msgid "Do you really want to delete the %1 selected items?"
|
||||
msgstr "Czy na pewno chcesz usunąć zaznaczone elementy (%1) ?"
|
||||
|
||||
#: dolphin.cpp:531
|
||||
msgid "Do you really want to delete '%1'?"
|
||||
msgstr "Skasować '%1' ?"
|
||||
|
||||
#: dolphin.cpp:582
|
||||
msgid "Delete operation completed."
|
||||
msgstr "Kasowanie zakończone"
|
||||
|
||||
#: dolphin.cpp:700
|
||||
msgid "Paste 1 File"
|
||||
msgstr "Wklej 1 Plik"
|
||||
|
||||
#: dolphin.cpp:703
|
||||
msgid "Paste %1 Files"
|
||||
msgstr "Wklej %1 Plików"
|
||||
|
||||
#: dolphin.cpp:1022
|
||||
msgid "Copy operation completed."
|
||||
msgstr "Kopiowanie zakończone."
|
||||
|
||||
#: dolphin.cpp:1026
|
||||
msgid "Move operation completed."
|
||||
msgstr "Przenoszenie zakończone."
|
||||
|
||||
#: dolphin.cpp:1030
|
||||
msgid "Move to trash operation completed."
|
||||
msgstr "Przenoszenie do kosza zakończone"
|
||||
|
||||
#: dolphin.cpp:1106
|
||||
msgid "Home"
|
||||
msgstr "Mój Folder"
|
||||
|
||||
#: dolphin.cpp:1107
|
||||
msgid "Storage Media"
|
||||
msgstr "Nośniki"
|
||||
|
||||
#: dolphin.cpp:1108
|
||||
msgid "Network"
|
||||
msgstr "Sieć"
|
||||
|
||||
#: dolphin.cpp:1109
|
||||
msgid "Root"
|
||||
msgstr "Folder Główny"
|
||||
|
||||
#: dolphin.cpp:1110
|
||||
msgid "Trash"
|
||||
msgstr "Kosz"
|
||||
|
||||
#: dolphin.cpp:1171
|
||||
msgid "Folder..."
|
||||
msgstr "Folder..."
|
||||
|
||||
#: dolphin.cpp:1176 renamedialog.cpp:33 undomanager.cpp:348
|
||||
msgid "Rename"
|
||||
msgstr "Zmień Nazwę"
|
||||
|
||||
#: dolphin.cpp:1180 undomanager.cpp:349
|
||||
msgid "Move to Trash"
|
||||
msgstr "Przenieś do Kosza"
|
||||
|
||||
#: dolphin.cpp:1190
|
||||
msgid "Propert&ies"
|
||||
msgstr "&Właściwości"
|
||||
|
||||
#: dolphin.cpp:1222
|
||||
msgid "Invert Selection"
|
||||
msgstr "Odwróć Zaznaczenie"
|
||||
|
||||
#: dolphin.cpp:1235 generalsettingspage.cpp:92 viewpropertiesdialog.cpp:64
|
||||
#: viewsettingspage.cpp:42
|
||||
msgid "Icons"
|
||||
msgstr "Ikony"
|
||||
|
||||
#: dolphin.cpp:1241 generalsettingspage.cpp:93 viewpropertiesdialog.cpp:65
|
||||
#: viewsettingspage.cpp:46
|
||||
msgid "Details"
|
||||
msgstr "Szczegóły"
|
||||
|
||||
#: dolphin.cpp:1247 generalsettingspage.cpp:94 viewpropertiesdialog.cpp:66
|
||||
#: viewsettingspage.cpp:50
|
||||
msgid "Previews"
|
||||
msgstr "Podgląd"
|
||||
|
||||
#: dolphin.cpp:1253
|
||||
msgid "By Name"
|
||||
msgstr "Wg. Nazwy"
|
||||
|
||||
#: dolphin.cpp:1258
|
||||
msgid "By Size"
|
||||
msgstr "Wg. Rozmiaru"
|
||||
|
||||
#: dolphin.cpp:1263
|
||||
msgid "By Date"
|
||||
msgstr "Wg. Daty"
|
||||
|
||||
#: dolphin.cpp:1268 viewpropertiesdialog.cpp:87
|
||||
msgid "Descending"
|
||||
msgstr "Malejąco"
|
||||
|
||||
#: dolphin.cpp:1271
|
||||
msgid "Show Hidden Files"
|
||||
msgstr "Pokaż Ukryte Pliki"
|
||||
|
||||
#: dolphin.cpp:1275
|
||||
msgid "Split View"
|
||||
msgstr "Podziel Widok"
|
||||
|
||||
#: dolphin.cpp:1290
|
||||
msgid "Edit Location"
|
||||
msgstr "Edytuj Położenie"
|
||||
|
||||
#: dolphin.cpp:1294
|
||||
msgid "Browse"
|
||||
msgstr "Przeglądaj"
|
||||
|
||||
#: dolphin.cpp:1298
|
||||
msgid "Sidebar"
|
||||
msgstr "Pasek Boczny"
|
||||
|
||||
#: dolphin.cpp:1302
|
||||
msgid "Adjust View Properties..."
|
||||
msgstr "Dostosuj Właściwości Widoku..."
|
||||
|
||||
#: dolphin.cpp:1313
|
||||
msgid "Open Terminal"
|
||||
msgstr "Otwórz Terminal"
|
||||
|
||||
#: dolphin.cpp:1318
|
||||
msgid "Find File..."
|
||||
msgstr "Znajdź Plik..."
|
||||
|
||||
#: dolphin.cpp:1323
|
||||
msgid "Show Filter Bar"
|
||||
msgstr "Pokaż Pasek Filtru"
|
||||
|
||||
#: dolphin.cpp:1327
|
||||
msgid "Compare Files"
|
||||
msgstr "Porównaj Pliki"
|
||||
|
||||
#: dolphin.cpp:1554
|
||||
msgid "Updating view properties..."
|
||||
msgstr "Aktualizuję ustawienia widoku..."
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 6
|
||||
#: dolphincontextmenu.cpp:121 rc.cpp:3
|
||||
#, no-c-format
|
||||
msgid "Create New"
|
||||
msgstr "Stwórz Nowe"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 24
|
||||
#: dolphincontextmenu.cpp:139 rc.cpp:6
|
||||
#, no-c-format
|
||||
msgid "View Mode"
|
||||
msgstr "Tryb Widoku"
|
||||
|
||||
#: dolphincontextmenu.cpp:142 dolphincontextmenu.cpp:211
|
||||
msgid "Bookmark this folder"
|
||||
msgstr "Dodaj Folder do Zakładek"
|
||||
|
||||
#: dolphincontextmenu.cpp:145
|
||||
msgid "Properties..."
|
||||
msgstr "Właściwości..."
|
||||
|
||||
#: dolphincontextmenu.cpp:153 dolphincontextmenu.cpp:233
|
||||
msgid "Add folder as bookmark"
|
||||
msgstr "Dodaj folder jako zakładkę"
|
||||
|
||||
#: dolphincontextmenu.cpp:310
|
||||
msgid "&Other..."
|
||||
msgstr "&Inne..."
|
||||
|
||||
#: dolphincontextmenu.cpp:311
|
||||
msgid "Open With"
|
||||
msgstr "Otwórz za pomocą"
|
||||
|
||||
#: dolphincontextmenu.cpp:317 dolphincontextmenu.cpp:324
|
||||
msgid "Open With..."
|
||||
msgstr "Otwórz za pomocą..."
|
||||
|
||||
#: dolphincontextmenu.cpp:456
|
||||
msgid "Actions"
|
||||
msgstr "Akcje"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:30
|
||||
msgid "Dolphin Preferences"
|
||||
msgstr "Preferencje"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:34
|
||||
msgid "General"
|
||||
msgstr "Ogólne"
|
||||
|
||||
#: dolphinsettingsdialog.cpp:40
|
||||
msgid "View Modes"
|
||||
msgstr "Tryby Widoku"
|
||||
|
||||
#: dolphinview.cpp:220
|
||||
msgid "The new item name is invalid."
|
||||
msgstr "Nazwa nowego elementu jest niepoprawna"
|
||||
|
||||
#: dolphinview.cpp:231
|
||||
msgid "Renaming items..."
|
||||
msgstr "Zmieniam nazwy..."
|
||||
|
||||
#: dolphinview.cpp:232
|
||||
msgid "Renaming finished."
|
||||
msgstr "Zmienianie zakończone."
|
||||
|
||||
#: dolphinview.cpp:251
|
||||
msgid "Renaming failed (item '%1' already exists)."
|
||||
msgstr "Zmiana nazwy nie udała się ('%1' już istnieje)."
|
||||
|
||||
#: dolphinview.cpp:548
|
||||
msgid "File Already Exists"
|
||||
msgstr "Plik już istnieje"
|
||||
|
||||
#: dolphinview.cpp:578
|
||||
msgid "Renamed file '%1' to '%2'."
|
||||
msgstr "Zmieniono nazwę '%1' na '%2'."
|
||||
|
||||
#: dolphinview.cpp:585
|
||||
msgid "Renaming of file '%1' to '%2' failed."
|
||||
msgstr "Błąd zmiany nazwy pliku '%1' na '%2'."
|
||||
|
||||
#: dolphinview.cpp:909
|
||||
msgid "The location is empty."
|
||||
msgstr "Pusta lokacja."
|
||||
|
||||
#: dolphinview.cpp:912
|
||||
msgid "The location '%1' is invalid."
|
||||
msgstr "Błędna lokacja '%1'"
|
||||
|
||||
#: dolphinview.cpp:923 dolphinview.cpp:925
|
||||
msgid "Loading directory..."
|
||||
msgstr "Ładuję folder..."
|
||||
|
||||
#: dolphinview.cpp:942
|
||||
msgid "1 Item"
|
||||
msgstr "1 Element"
|
||||
|
||||
#: dolphinview.cpp:945
|
||||
msgid "%1 Items"
|
||||
msgstr "%1 Elementów"
|
||||
|
||||
#: dolphinview.cpp:951
|
||||
msgid "1 Folder"
|
||||
msgstr "1 Folder"
|
||||
|
||||
#: dolphinview.cpp:954
|
||||
msgid "%1 Folders"
|
||||
msgstr "%1 Folderów"
|
||||
|
||||
#: dolphinview.cpp:960
|
||||
msgid "1 File"
|
||||
msgstr "1 Plik"
|
||||
|
||||
#: dolphinview.cpp:963
|
||||
msgid "%1 Files"
|
||||
msgstr "%1 Plików"
|
||||
|
||||
#: dolphinview.cpp:994
|
||||
msgid "1 Folder selected"
|
||||
msgstr "1 Folder zaznaczony"
|
||||
|
||||
#: dolphinview.cpp:997
|
||||
msgid "%1 Folders selected"
|
||||
msgstr "%1 zaznaczonych Folderów"
|
||||
|
||||
#: dolphinview.cpp:1006
|
||||
msgid "1 File selected (%1)"
|
||||
msgstr "1 Plik zaznaczony (%1)"
|
||||
|
||||
#: dolphinview.cpp:1009
|
||||
msgid "%1 Files selected (%1)"
|
||||
msgstr "%1 zaznaczonych Plików (%1)"
|
||||
|
||||
#: editbookmarkdialog.cpp:72
|
||||
msgid "Icon:"
|
||||
msgstr "Ikona:"
|
||||
|
||||
#: editbookmarkdialog.cpp:80
|
||||
msgid "Name:"
|
||||
msgstr "Nazwa:"
|
||||
|
||||
#: editbookmarkdialog.cpp:86 generalsettingspage.cpp:70
|
||||
msgid "Location:"
|
||||
msgstr "Lokacja:"
|
||||
|
||||
#: filterbar.cpp:44
|
||||
msgid "Filter:"
|
||||
msgstr "Filtr:"
|
||||
|
||||
#: generalsettingspage.cpp:62
|
||||
msgid "Home URL"
|
||||
msgstr "URL Folderu Użytkownika"
|
||||
|
||||
#: generalsettingspage.cpp:80
|
||||
msgid "Use current location"
|
||||
msgstr "Użyj bierzącej lokacji"
|
||||
|
||||
#: generalsettingspage.cpp:83
|
||||
msgid "Use default location"
|
||||
msgstr "Użyj domyślnej lokacji"
|
||||
|
||||
#: generalsettingspage.cpp:88
|
||||
msgid "Default View Mode"
|
||||
msgstr "Domyślny tryb widoku"
|
||||
|
||||
#: generalsettingspage.cpp:103
|
||||
msgid "Start with split view"
|
||||
msgstr "Startuj z widokiem podzielonym"
|
||||
|
||||
#: generalsettingspage.cpp:107
|
||||
msgid "Start with editable navigation bar"
|
||||
msgstr "Startuj z edytowalnym paskiem lokacji"
|
||||
|
||||
#: iconsviewsettingspage.cpp:93
|
||||
msgid "Preview Size"
|
||||
msgstr "Rozmiar Podglądu"
|
||||
|
||||
#: iconsviewsettingspage.cpp:127
|
||||
msgid "Number of lines:"
|
||||
msgstr "Liczba linii:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:131
|
||||
msgid "Text width:"
|
||||
msgstr "Długość tekstu:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:137
|
||||
msgid "Grid"
|
||||
msgstr "Siatka"
|
||||
|
||||
#: iconsviewsettingspage.cpp:142
|
||||
msgid "Arrangement:"
|
||||
msgstr "Rozmieszczenie:"
|
||||
|
||||
#: iconsviewsettingspage.cpp:144
|
||||
msgid "Left to right"
|
||||
msgstr "Od lewa do prawa"
|
||||
|
||||
#: iconsviewsettingspage.cpp:145
|
||||
msgid "Top to bottom"
|
||||
msgstr "Od góry do dołu"
|
||||
|
||||
#: iconsviewsettingspage.cpp:148
|
||||
msgid "Grid spacing:"
|
||||
msgstr "Odstęp siatki:"
|
||||
|
||||
#: infosidebarpage.cpp:163
|
||||
msgid "%1 items selected"
|
||||
msgstr "%1 zaznaczonych elementów"
|
||||
|
||||
#: infosidebarpage.cpp:283 infosidebarpage.cpp:286
|
||||
msgid "Type:"
|
||||
msgstr "Typ:"
|
||||
|
||||
#: infosidebarpage.cpp:283
|
||||
msgid "Directory"
|
||||
msgstr "Folder"
|
||||
|
||||
#: infosidebarpage.cpp:289
|
||||
msgid "Size:"
|
||||
msgstr "Rozmiar:"
|
||||
|
||||
#: infosidebarpage.cpp:290
|
||||
msgid "Modified:"
|
||||
msgstr "Modyfikacja:"
|
||||
|
||||
#: itemeffectsmanager.cpp:185
|
||||
msgid "%1 (Folder)"
|
||||
msgstr "%1 (Folder)"
|
||||
|
||||
#: main.cpp:31
|
||||
msgid "Document to open"
|
||||
msgstr "Dokument do otwarcia"
|
||||
|
||||
#: main.cpp:38
|
||||
msgid "Dolphin"
|
||||
msgstr "Dolphin"
|
||||
|
||||
#: main.cpp:40
|
||||
msgid "File Manager"
|
||||
msgstr "Menadżer Plików"
|
||||
|
||||
#: main.cpp:45
|
||||
msgid "Maintainer and developer"
|
||||
msgstr "Twórca"
|
||||
|
||||
#: main.cpp:46 main.cpp:47
|
||||
msgid "Developer"
|
||||
msgstr "Programista"
|
||||
|
||||
#: main.cpp:48 main.cpp:49
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentacja"
|
||||
|
||||
#: main.cpp:50
|
||||
msgid "... for the great support and the amazing patches"
|
||||
msgstr "... za świetne wsparcie i wspaniała łatki"
|
||||
|
||||
#: main.cpp:51
|
||||
msgid "... for their patches"
|
||||
msgstr "... za ich łatki"
|
||||
|
||||
#: main.cpp:53
|
||||
msgid "... for their translations"
|
||||
msgstr "... za ich tłumaczenia"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 30
|
||||
#: rc.cpp:9
|
||||
#, no-c-format
|
||||
msgid "Sort"
|
||||
msgstr "Sortuj"
|
||||
|
||||
#. i18n: file ./dolphinui.rc line 44
|
||||
#: rc.cpp:12
|
||||
#, no-c-format
|
||||
msgid "Navigation Bar"
|
||||
msgstr "Pasek Nawigacyjny"
|
||||
|
||||
#: renamedialog.cpp:30
|
||||
msgid "Rename Items"
|
||||
msgstr "Zmień Nazwy"
|
||||
|
||||
#: renamedialog.cpp:39
|
||||
msgid "Rename the %1 selected items to:"
|
||||
msgstr "Zmień nazwy %1 elementów na:"
|
||||
|
||||
#: renamedialog.cpp:43
|
||||
msgid "New name #"
|
||||
msgstr "Nowa nazwa #"
|
||||
|
||||
#: renamedialog.cpp:68
|
||||
msgid "(# will be replaced by ascending numbers)"
|
||||
msgstr "(# zostanie zastąpione rosnącymi liczbami)"
|
||||
|
||||
#: statusbarspaceinfo.cpp:92
|
||||
msgid "%1% of %2 used"
|
||||
msgstr "%1% z %2 używane"
|
||||
|
||||
#: statusbarspaceinfo.cpp:98
|
||||
msgid "Getting size..."
|
||||
msgstr "Określam rozmiar..."
|
||||
|
||||
#: undomanager.cpp:87 undomanager.cpp:135 undomanager.cpp:251
|
||||
msgid "Undo: %1"
|
||||
msgstr "Cofnij: %1"
|
||||
|
||||
#: undomanager.cpp:123
|
||||
msgid "Executing undo operation..."
|
||||
msgstr "Cofam..."
|
||||
|
||||
#: undomanager.cpp:124
|
||||
msgid "Executed undo operation."
|
||||
msgstr "Cofnięto akcję."
|
||||
|
||||
#: undomanager.cpp:140 undomanager.cpp:247
|
||||
msgid "Redo: %1"
|
||||
msgstr "Powtórz: %1"
|
||||
|
||||
#: undomanager.cpp:236
|
||||
msgid "Executing redo operation..."
|
||||
msgstr "Powtarzam..."
|
||||
|
||||
#: undomanager.cpp:237
|
||||
msgid "Executed redo operation."
|
||||
msgstr "Powtórzono operację."
|
||||
|
||||
#: undomanager.cpp:347
|
||||
msgid "Link"
|
||||
msgstr "Odnośnik"
|
||||
|
||||
#: undomanager.cpp:350
|
||||
msgid "Create New Folder"
|
||||
msgstr "Stwórz Nowy Folder"
|
||||
|
||||
#: undomanager.cpp:351
|
||||
msgid "Create New File"
|
||||
msgstr "Stwórz Nowy Plik"
|
||||
|
||||
#: urlnavigator.cpp:367
|
||||
msgid "Browse (Ctrl+B, Escape)"
|
||||
msgstr "Przeglądaj (Ctrl+B, Escape)"
|
||||
|
||||
#: urlnavigator.cpp:375
|
||||
msgid "Edit location (Ctrl+L)"
|
||||
msgstr "Edytuj lokację (Ctrl+L)"
|
||||
|
||||
#: urlnavigator.cpp:428
|
||||
msgid "Custom Path"
|
||||
msgstr "Własna Ścieżka"
|
||||
|
||||
#: viewpropertiesdialog.cpp:41
|
||||
msgid "View Properties"
|
||||
msgstr "Właściwości Widoku"
|
||||
|
||||
#: viewpropertiesdialog.cpp:62
|
||||
msgid "View mode:"
|
||||
msgstr "Tryb Widoku:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:70
|
||||
msgid "Sorting:"
|
||||
msgstr "Sortowanie:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:84
|
||||
msgid "Sort order:"
|
||||
msgstr "Kolejność Sortowania:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:86
|
||||
msgid "Ascending"
|
||||
msgstr "Malejąco"
|
||||
|
||||
#: viewpropertiesdialog.cpp:91
|
||||
msgid "Show hidden files"
|
||||
msgstr "Pokaż ukryte pliki"
|
||||
|
||||
#: viewpropertiesdialog.cpp:97
|
||||
msgid "Apply view properties to:"
|
||||
msgstr "Zastosuj ustawienia widoku do:"
|
||||
|
||||
#: viewpropertiesdialog.cpp:102
|
||||
msgid "Current folder"
|
||||
msgstr "Bierzący folder"
|
||||
|
||||
#: viewpropertiesdialog.cpp:105
|
||||
msgid "Current folder including all sub folders"
|
||||
msgstr "Bierzący folder i wszystkie podfoldery"
|
||||
|
||||
#: viewpropertiesdialog.cpp:108
|
||||
msgid "All folders"
|
||||
msgstr "Wszystkie foldery"
|
||||
|
||||
#: viewpropertiesdialog.cpp:210
|
||||
msgid ""
|
||||
"The view properties of all folders will be replaced. Do you want to continue?"
|
||||
msgstr "Właściwości widoku wszystkich folderów zostaną zmienione. Kontynuować?"
|
||||
|
||||
#: viewpropertiesdialog.cpp:224
|
||||
msgid ""
|
||||
"The view properties of all sub folders will be replaced. Do you want to "
|
||||
"continue?"
|
||||
msgstr ""
|
||||
"Właściwości widoku wszystkich podfolderów zostaną zmienione. Kontynuować?"
|
||||
|
||||
#~ msgid "Remove..."
|
||||
#~ msgstr "Usuń..."
|
||||
|
||||
#~ msgid "Unknown size"
|
||||
#~ msgstr "Nieznany rozmiar"
|
@ -0,0 +1,62 @@
|
||||
## Makefile.am for d3lphin
|
||||
|
||||
SUBDIRS = pics servicemenus
|
||||
|
||||
# this is the program that gets installed. it's name is used for all
|
||||
# of the other Makefile.am variables
|
||||
bin_PROGRAMS = d3lphin
|
||||
|
||||
# set the include path for X, qt and KDE
|
||||
INCLUDES = $(all_includes)
|
||||
|
||||
# the library search path.
|
||||
d3lphin_LDFLAGS = $(KDE_RPATH) $(all_libraries)
|
||||
|
||||
# the libraries to link against.
|
||||
d3lphin_LDADD = $(LIB_KFILE) $(LIB_KDEPRINT) -lkonq
|
||||
|
||||
# which sources should be compiled for d3lphin
|
||||
d3lphin_SOURCES = bookmarkselector.cpp bookmarkssettingspage.cpp \
|
||||
bookmarkssidebarpage.cpp detailsviewsettingspage.cpp dolphin.cpp dolphincontextmenu.cpp \
|
||||
dolphindetailsview.cpp dolphindetailsviewsettings.cpp dolphindirlister.cpp \
|
||||
dolphiniconsview.cpp dolphiniconsviewsettings.cpp dolphinsettings.cpp \
|
||||
dolphinsettingsbase.cpp dolphinsettingsdialog.cpp dolphinstatusbar.cpp dolphinview.cpp \
|
||||
editbookmarkdialog.cpp filterbar.cpp generalsettingspage.cpp iconsviewsettingspage.cpp \
|
||||
infosidebarpage.cpp itemeffectsmanager.cpp main.cpp pixmapviewer.cpp progressindicator.cpp \
|
||||
renamedialog.cpp settingspagebase.cpp sidebarpage.cpp sidebars.cpp sidebarssettings.cpp \
|
||||
statusbarmessagelabel.cpp statusbarspaceinfo.cpp undomanager.cpp urlbutton.cpp urlnavigator.cpp \
|
||||
urlnavigatorbutton.cpp viewproperties.cpp viewpropertiesdialog.cpp viewsettingspage.cpp
|
||||
|
||||
|
||||
# these are the headers for your project
|
||||
noinst_HEADERS = bookmarkselector.h bookmarkssettingspage.h \
|
||||
bookmarkssidebarpage.h detailsviewsettingspage.h dolphin.h dolphincontextmenu.h \
|
||||
dolphindetailsview.h dolphindetailsviewsettings.h dolphindirlister.h dolphiniconsview.h \
|
||||
dolphiniconsviewsettings.h dolphiniconsviewsettings.h iconsviewsettingspage.h dolphinsettings.h \
|
||||
dolphinsettingsbase.h dolphinsettingsdialog.h dolphinstatusbar.h dolphinview.h \
|
||||
editbookmarkdialog.h filterbar.h generalsettingspage.h iconsviewsettingspage.h \
|
||||
infosidebarpage.h itemeffectsmanager.h pixmapviewer.h renamedialog.h settingspagebase.h \
|
||||
sidebarpage.h sidebars.h statusbarmessagelabel.h statusbarspaceinfo.h undomanager.h \
|
||||
urlbutton.h urlnavigator.h urlnavigatorbutton.h viewproperties.h \
|
||||
viewpropertiesdialog.h viewsettingspage.h
|
||||
|
||||
# let automoc handle all of the meta source files (moc)
|
||||
METASOURCES = AUTO
|
||||
|
||||
messages: rc.cpp
|
||||
$(EXTRACTRC) `find . -name \*.ui -o -name \*.rc` > rc.cpp
|
||||
$(XGETTEXT) *.cpp -o $(podir)/d3lphin.pot
|
||||
|
||||
|
||||
|
||||
# this is where the kdelnk file will go
|
||||
kdelnkdir = $(kde_appsdir)/System
|
||||
xdg_apps_DATA = d3lphin.desktop
|
||||
|
||||
# this is where the XML-GUI resource file goes
|
||||
rcdir = $(kde_datadir)/d3lphin
|
||||
rc_DATA = d3lphinui.rc
|
||||
|
||||
KDE_ICON = AUTO
|
||||
kde_icon_KDEICON = hi128-app-d3lphin.png hi16-app-d3lphin.png \
|
||||
hi22-app-d3lphin.png hi32-app-d3lphin.png hi48-app-d3lphin.png hi64-app-d3lphin.png
|
@ -0,0 +1,81 @@
|
||||
-----------------------------------------------
|
||||
Kde application framework template quickstart
|
||||
Author: Thomas Nagy
|
||||
Date: 2004-03-22
|
||||
-----------------------------------------------
|
||||
|
||||
This README file explains you basic things for starting with
|
||||
this application template.
|
||||
|
||||
|
||||
** Building and installing **
|
||||
|
||||
* Build the configure script by "make -f Makefile.cvs"
|
||||
|
||||
* To clean, use "make clean", and to clean everything
|
||||
(remove the makefiles, etc), use "make distclean"
|
||||
|
||||
* To distribute your program, try "make dist".
|
||||
This will make a compact tarball archive of your release with the
|
||||
necessary scripts inside.
|
||||
|
||||
* Modifying the auto-tools scripts
|
||||
for automake scripts there is an excellent tutorial there :
|
||||
http://developer.kde.org/documentation/other/makefile_am_howto.html
|
||||
|
||||
* Simplify your life : install the project in your home directory for
|
||||
testing purposes.
|
||||
./configure --prefix=/home/user/dummyfolder/
|
||||
In the end when you finished the development you can
|
||||
rm -rf /home/user/dummyfolder/
|
||||
without fear.
|
||||
|
||||
|
||||
** Technologies **
|
||||
|
||||
* Build the menus of your application easily
|
||||
kde applications now use an xml file (*ui.rc file) to build the menus.
|
||||
This allow a great customization of the application. However, when
|
||||
programming the menu is shown only after a "make install"
|
||||
|
||||
For more details, consult :
|
||||
http://devel-home.kde.org/~larrosa/tutorial/p9.html
|
||||
http://developer.kde.org/documentation/tutorials/xmlui/preface.html
|
||||
|
||||
* Use KConfig XT to create your configuration dialogs and make
|
||||
them more maintainable.
|
||||
|
||||
For more details, consult :
|
||||
http://developer.kde.org/documentation/tutorials/kconfigxt/kconfigxt.html
|
||||
|
||||
* With KParts, you can embed other kde components in your program, or make your program
|
||||
embeddable in other apps. For example, the kmplayer kpart can be called to play videos
|
||||
in your app.
|
||||
|
||||
For more details, consult :
|
||||
http://www-106.ibm.com/developerworks/library/l-kparts/
|
||||
http://developer.kde.org/documentation/tutorials/dot/writing-plugins.html
|
||||
http://developer.kde.org/documentation/tutorials/developing-a-plugin-structure/index.html
|
||||
|
||||
* With dcop, you can control your app from other applications
|
||||
Make sure to include K_DCOP and a kdcop: section in your .h file
|
||||
http://developer.kde.org/documentation/tutorials/dot/dcopiface/dcop-interface.html
|
||||
|
||||
|
||||
** Documentation **
|
||||
|
||||
* For the translations :
|
||||
1. Download a patched gettext which can be found at:
|
||||
http://public.kde.planetmirror.com/pub/kde/devel/gettext-kde/
|
||||
2. Install that gettext in ~/bin/
|
||||
3. cd ~/yourproject, export PATH=~/bin:$PATH, export
|
||||
KDEDIR=/where_your_KDE3_is
|
||||
4. make -f admin/Makefile.common package-messages
|
||||
5. make package-messages
|
||||
6. Translate the po files (not the pot!!) with kbabel or xemacs
|
||||
|
||||
* Do not forget to write the documentation for your kde app
|
||||
edit the documentation template index.docbook in doc/
|
||||
|
||||
|
||||
|
@ -0,0 +1,183 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include <assert.h>
|
||||
#include <qpopupmenu.h>
|
||||
#include <qpainter.h>
|
||||
#include <qpixmap.h>
|
||||
|
||||
#include <kiconloader.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
|
||||
#include "bookmarkselector.h"
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphinview.h"
|
||||
#include "dolphin.h"
|
||||
#include "urlnavigator.h"
|
||||
|
||||
BookmarkSelector::BookmarkSelector(URLNavigator* parent) :
|
||||
URLButton(parent),
|
||||
m_selectedIndex(0)
|
||||
{
|
||||
setFocusPolicy(QWidget::NoFocus);
|
||||
|
||||
m_bookmarksMenu = new QPopupMenu(this);
|
||||
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
connect(manager, SIGNAL(changed(const QString&, const QString&)),
|
||||
this, SLOT(updateBookmarks()));
|
||||
|
||||
updateBookmarks();
|
||||
|
||||
connect(m_bookmarksMenu, SIGNAL(activated(int)),
|
||||
this, SLOT(slotBookmarkActivated(int)));
|
||||
|
||||
setPopup(m_bookmarksMenu);
|
||||
}
|
||||
|
||||
BookmarkSelector::~BookmarkSelector()
|
||||
{
|
||||
}
|
||||
|
||||
void BookmarkSelector::updateBookmarks()
|
||||
{
|
||||
m_bookmarksMenu->clear();
|
||||
|
||||
KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
int i = 0;
|
||||
while (!bookmark.isNull()) {
|
||||
m_bookmarksMenu->insertItem(MainBarIcon(bookmark.icon()),
|
||||
bookmark.text(),
|
||||
i);
|
||||
if (i == m_selectedIndex) {
|
||||
QPixmap pixmap = SmallIcon(bookmark.icon());
|
||||
setPixmap(pixmap);
|
||||
setMinimumWidth(pixmap.width() + 2);
|
||||
}
|
||||
bookmark = root.next(bookmark);
|
||||
++i;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void BookmarkSelector::updateSelection(const KURL& url)
|
||||
{
|
||||
KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
|
||||
int maxLength = 0;
|
||||
m_selectedIndex = -1;
|
||||
|
||||
// Search the bookmark which is equal to the URL or at least is a parent URL.
|
||||
// If there are more than one possible parent URL candidates, choose the bookmark
|
||||
// which covers the bigger range of the URL.
|
||||
int i = 0;
|
||||
while (!bookmark.isNull()) {
|
||||
const KURL bookmarkURL = bookmark.url();
|
||||
if (bookmarkURL.isParentOf(url)) {
|
||||
const int length = bookmarkURL.prettyURL().length();
|
||||
if (length > maxLength) {
|
||||
m_selectedIndex = i;
|
||||
setPixmap(SmallIcon(bookmark.icon()));
|
||||
maxLength = length;
|
||||
}
|
||||
}
|
||||
bookmark = root.next(bookmark);
|
||||
++i;
|
||||
}
|
||||
|
||||
if (m_selectedIndex < 0) {
|
||||
// No bookmark has been found which matches to the given URL. Show
|
||||
// a generic folder icon as pixmap for indication:
|
||||
setPixmap(SmallIcon("folder"));
|
||||
}
|
||||
}
|
||||
|
||||
KBookmark BookmarkSelector::selectedBookmark() const
|
||||
{
|
||||
return DolphinSettings::instance().bookmark(m_selectedIndex);
|
||||
}
|
||||
|
||||
void BookmarkSelector::drawButton(QPainter* painter)
|
||||
{
|
||||
const int buttonWidth = width();
|
||||
const int buttonHeight = height();
|
||||
|
||||
QColor backgroundColor;
|
||||
QColor foregroundColor;
|
||||
const bool isHighlighted = isDisplayHintEnabled(EnteredHint) ||
|
||||
isDisplayHintEnabled(DraggedHint);
|
||||
if (isHighlighted) {
|
||||
backgroundColor = KGlobalSettings::highlightColor();
|
||||
foregroundColor = KGlobalSettings::highlightedTextColor();
|
||||
}
|
||||
else {
|
||||
backgroundColor = colorGroup().background();
|
||||
foregroundColor = KGlobalSettings::buttonTextColor();
|
||||
}
|
||||
|
||||
// dimm the colors if the parent view does not have the focus
|
||||
const DolphinView* parentView = urlNavigator()->dolphinView();
|
||||
const Dolphin& dolphin = Dolphin::mainWin();
|
||||
|
||||
const bool isActive = (dolphin.activeView() == parentView);
|
||||
if (!isActive) {
|
||||
QColor dimmColor(colorGroup().background());
|
||||
foregroundColor = mixColors(foregroundColor, dimmColor);
|
||||
if (isHighlighted) {
|
||||
backgroundColor = mixColors(backgroundColor, dimmColor);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(isDisplayHintEnabled(ActivatedHint) && isActive) && !isHighlighted) {
|
||||
// dimm the foreground color by mixing it with the background
|
||||
foregroundColor = mixColors(foregroundColor, backgroundColor);
|
||||
painter->setPen(foregroundColor);
|
||||
}
|
||||
|
||||
// draw button backround
|
||||
painter->setPen(NoPen);
|
||||
painter->setBrush(backgroundColor);
|
||||
painter->drawRect(0, 0, buttonWidth, buttonHeight);
|
||||
|
||||
// draw icon
|
||||
const QPixmap* icon = pixmap();
|
||||
if (icon != 0) {
|
||||
const int x = (buttonWidth - icon->width()) / 2;
|
||||
const int y = (buttonHeight - icon->height()) / 2;
|
||||
painter->drawPixmap(x, y, *icon);
|
||||
}
|
||||
}
|
||||
|
||||
void BookmarkSelector::slotBookmarkActivated(int index)
|
||||
{
|
||||
m_selectedIndex = index;
|
||||
|
||||
KBookmark bookmark = selectedBookmark();
|
||||
setPixmap(SmallIcon(bookmark.icon()));
|
||||
|
||||
emit bookmarkActivated(index);
|
||||
}
|
||||
|
||||
#include "bookmarkselector.moc"
|
||||
|
@ -0,0 +1,98 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef BOOKMARKSELECTOR_H
|
||||
#define BOOKMARKSELECTOR_H
|
||||
|
||||
#include <kbookmark.h>
|
||||
#include <urlbutton.h>
|
||||
|
||||
class URLNavigator;
|
||||
class QPopupMenu;
|
||||
class KURL;
|
||||
|
||||
/**
|
||||
* @brief Allows to select a bookmark from a popup menu.
|
||||
*
|
||||
* The icon from the current selected bookmark is shown
|
||||
* inside the bookmark selector.
|
||||
*
|
||||
* @see URLNavigator
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class BookmarkSelector : public URLButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* @param parent Parent widget where the bookmark selector
|
||||
* is embedded into.
|
||||
*/
|
||||
BookmarkSelector(URLNavigator* parent);
|
||||
|
||||
virtual ~BookmarkSelector();
|
||||
|
||||
/**
|
||||
* Updates the selection dependent from the given URL \a url. The
|
||||
* URL must not match exactly to one of the available bookmarks:
|
||||
* The bookmark which is equal to the URL or at least is a parent URL
|
||||
* is selected. If there are more than one possible parent URL candidates,
|
||||
* the bookmark which covers the bigger range of the URL is selected.
|
||||
*/
|
||||
void updateSelection(const KURL& url);
|
||||
|
||||
/**
|
||||
* Returns the index of the selected bookmark. To get
|
||||
* the bookmark, use BookmarkSelector::selectedBookmark().
|
||||
*/
|
||||
int selectedIndex() const { return m_selectedIndex; }
|
||||
|
||||
/** Returns the selected bookmark. */
|
||||
KBookmark selectedBookmark() const;
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Is send when a bookmark has been activated by the user.
|
||||
* @param index Index of the selected bookmark.
|
||||
*/
|
||||
void bookmarkActivated(int index);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Draws the icon of the selected URL as content of the URL
|
||||
* selector.
|
||||
*/
|
||||
virtual void drawButton(QPainter* painter);
|
||||
|
||||
private slots:
|
||||
/**
|
||||
* Updates the selected index and the icon if a bookmark
|
||||
* has been activated by the user.
|
||||
*/
|
||||
void slotBookmarkActivated(int index);
|
||||
void updateBookmarks();
|
||||
|
||||
private:
|
||||
int m_selectedIndex;
|
||||
QPopupMenu* m_bookmarksMenu;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,314 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "bookmarkssettingspage.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <qlayout.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qvbox.h>
|
||||
|
||||
#include <kbookmark.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <kdialog.h>
|
||||
#include <klistview.h>
|
||||
#include <klocale.h>
|
||||
#include <kpushbutton.h>
|
||||
|
||||
#include "dolphinsettings.h"
|
||||
#include "editbookmarkdialog.h"
|
||||
|
||||
BookmarksSettingsPage::BookmarksSettingsPage(QWidget*parent) :
|
||||
SettingsPageBase(parent),
|
||||
m_addButton(0),
|
||||
m_removeButton(0),
|
||||
m_moveUpButton(0),
|
||||
m_moveDownButton(0)
|
||||
{
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(parent, 2, KDialog::spacingHint());
|
||||
|
||||
const int spacing = KDialog::spacingHint();
|
||||
|
||||
QHBox* hBox = new QHBox(parent);
|
||||
hBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
hBox->setSpacing(spacing);
|
||||
hBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored);
|
||||
|
||||
m_listView = new KListView(hBox);
|
||||
m_listView->addColumn(i18n("Icon"));
|
||||
m_listView->addColumn(i18n("Name"));
|
||||
m_listView->addColumn(i18n("Location"));
|
||||
m_listView->setResizeMode(QListView::LastColumn);
|
||||
m_listView->setColumnAlignment(0, Qt::AlignHCenter);
|
||||
m_listView->setAllColumnsShowFocus(true);
|
||||
m_listView->setSorting(-1);
|
||||
connect(m_listView, SIGNAL(selectionChanged()),
|
||||
this, SLOT(updateButtons()));
|
||||
connect(m_listView, SIGNAL(pressed(QListViewItem*)),
|
||||
this, SLOT(slotBookmarkPressed(QListViewItem*)));
|
||||
connect(m_listView, SIGNAL(doubleClicked(QListViewItem*, const QPoint&, int)),
|
||||
this, SLOT(slotBookmarkDoubleClicked(QListViewItem*, const QPoint&, int)));
|
||||
|
||||
QVBox* buttonBox = new QVBox(hBox);
|
||||
buttonBox->setSpacing(spacing);
|
||||
|
||||
const QSizePolicy buttonSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
|
||||
|
||||
m_addButton = new KPushButton(i18n("Add..."), buttonBox);
|
||||
connect(m_addButton, SIGNAL(clicked()),
|
||||
this, SLOT(slotAddButtonClicked()));
|
||||
m_addButton->setSizePolicy(buttonSizePolicy);
|
||||
|
||||
m_editButton = new KPushButton(i18n("Edit..."), buttonBox);
|
||||
connect(m_editButton, SIGNAL(clicked()),
|
||||
this, SLOT(slotEditButtonClicked()));
|
||||
m_editButton->setSizePolicy(buttonSizePolicy);
|
||||
|
||||
m_removeButton = new KPushButton(i18n("Remove"), buttonBox);
|
||||
connect(m_removeButton, SIGNAL(clicked()),
|
||||
this, SLOT(slotRemoveButtonClicked()));
|
||||
m_removeButton->setSizePolicy(buttonSizePolicy);
|
||||
|
||||
m_moveUpButton = new KPushButton(i18n("Move Up"), buttonBox);
|
||||
connect(m_moveUpButton, SIGNAL(clicked()),
|
||||
this, SLOT(slotMoveUpButtonClicked()));
|
||||
m_moveUpButton->setSizePolicy(buttonSizePolicy);
|
||||
|
||||
m_moveDownButton = new KPushButton(i18n("Move Down"), buttonBox);
|
||||
connect(m_moveDownButton, SIGNAL(clicked()),
|
||||
this, SLOT(slotMoveDownButtonClicked()));
|
||||
m_moveDownButton->setSizePolicy(buttonSizePolicy);
|
||||
|
||||
// Add a dummy widget with no restriction regarding a vertical resizing.
|
||||
// This assures that the spacing between the buttons is not increased.
|
||||
new QWidget(buttonBox);
|
||||
|
||||
topLayout->addWidget(hBox);
|
||||
|
||||
// insert all editable bookmarks.
|
||||
KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
|
||||
QListViewItem* prev = 0;
|
||||
while (!bookmark.isNull()) {
|
||||
QListViewItem* item = new QListViewItem(m_listView);
|
||||
item->setPixmap(PixmapIdx, SmallIcon(bookmark.icon()));
|
||||
item->setText(NameIdx, bookmark.text());
|
||||
item->setText(URLIdx, bookmark.url().prettyURL());
|
||||
|
||||
// add hidden column to be able to retrieve the icon name again
|
||||
item->setText(IconIdx, bookmark.icon());
|
||||
|
||||
m_listView->insertItem(item);
|
||||
if (prev != 0) {
|
||||
item->moveItem(prev);
|
||||
}
|
||||
prev = item;
|
||||
|
||||
bookmark = root.next(bookmark);
|
||||
}
|
||||
m_listView->setSelected(m_listView->firstChild(), true);
|
||||
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
|
||||
BookmarksSettingsPage::~BookmarksSettingsPage()
|
||||
{
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::applySettings()
|
||||
{
|
||||
// delete all bookmarks
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
KBookmarkGroup root = manager->root();
|
||||
KBookmark bookmark = root.first();
|
||||
while (!bookmark.isNull()) {
|
||||
root.deleteBookmark(bookmark);
|
||||
bookmark = root.first();
|
||||
}
|
||||
|
||||
// add all items as bookmarks
|
||||
QListViewItem* item = m_listView->firstChild();
|
||||
while (item != 0) {
|
||||
root.addBookmark(manager,
|
||||
item->text(NameIdx),
|
||||
KURL(item->text(URLIdx)),
|
||||
item->text(IconIdx)); // hidden column
|
||||
item = item->itemBelow();
|
||||
}
|
||||
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::updateButtons()
|
||||
{
|
||||
const QListViewItem* selectedItem = m_listView->selectedItem();
|
||||
const bool hasSelection = (selectedItem != 0);
|
||||
|
||||
m_editButton->setEnabled(hasSelection);
|
||||
m_removeButton->setEnabled(hasSelection);
|
||||
|
||||
const bool enableMoveUp = hasSelection &&
|
||||
(selectedItem != m_listView->firstChild());
|
||||
m_moveUpButton->setEnabled(enableMoveUp);
|
||||
|
||||
const bool enableMoveDown = hasSelection &&
|
||||
(selectedItem != m_listView->lastChild());
|
||||
m_moveDownButton->setEnabled(enableMoveDown);
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotBookmarkDoubleClicked(QListViewItem*,
|
||||
const QPoint&,
|
||||
int)
|
||||
{
|
||||
slotEditButtonClicked();
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotBookmarkPressed(QListViewItem* item)
|
||||
{
|
||||
if (item == 0) {
|
||||
m_listView->setSelected(m_listView->currentItem(), true);
|
||||
}
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotAddButtonClicked()
|
||||
{
|
||||
KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add Bookmark"),
|
||||
i18n("New bookmark"),
|
||||
KURL(),
|
||||
"bookmark");
|
||||
if (!bookmark.isNull()) {
|
||||
// insert bookmark into listview
|
||||
QListViewItem* item = new QListViewItem(m_listView);
|
||||
item->setPixmap(PixmapIdx, SmallIcon(bookmark.icon()));
|
||||
item->setText(NameIdx, bookmark.text());
|
||||
item->setText(URLIdx, bookmark.url().prettyURL());
|
||||
item->setText(IconIdx, bookmark.icon());
|
||||
m_listView->insertItem(item);
|
||||
|
||||
QListViewItem* lastItem = m_listView->lastChild();
|
||||
if (lastItem != 0) {
|
||||
item->moveItem(lastItem);
|
||||
}
|
||||
|
||||
m_listView->setSelected(item, true);
|
||||
updateButtons();
|
||||
}
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotEditButtonClicked()
|
||||
{
|
||||
QListViewItem* item = m_listView->selectedItem();
|
||||
assert(item != 0); // 'edit' may not get invoked when having no items
|
||||
|
||||
KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Edit Bookmark"),
|
||||
item->text(NameIdx),
|
||||
KURL(item->text(URLIdx)),
|
||||
item->text(IconIdx));
|
||||
if (!bookmark.isNull()) {
|
||||
item->setPixmap(PixmapIdx, SmallIcon(bookmark.icon()));
|
||||
item->setText(NameIdx, bookmark.text());
|
||||
item->setText(URLIdx, bookmark.url().prettyURL());
|
||||
item->setText(IconIdx, bookmark.icon());
|
||||
}
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotRemoveButtonClicked()
|
||||
{
|
||||
QListViewItem* selectedItem = m_listView->selectedItem();
|
||||
assert(selectedItem != 0);
|
||||
QListViewItem* nextItem = selectedItem->itemBelow();
|
||||
if (nextItem == 0) {
|
||||
nextItem = selectedItem->itemAbove();
|
||||
}
|
||||
|
||||
m_listView->takeItem(selectedItem);
|
||||
if (nextItem != 0) {
|
||||
m_listView->setSelected(nextItem, true);
|
||||
}
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotMoveUpButtonClicked()
|
||||
{
|
||||
moveBookmark(-1);
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::slotMoveDownButtonClicked()
|
||||
{
|
||||
moveBookmark(+1);
|
||||
}
|
||||
|
||||
int BookmarksSettingsPage::selectedBookmarkIndex() const
|
||||
{
|
||||
int index = -1;
|
||||
|
||||
QListViewItem* selectedItem = m_listView->selectedItem();
|
||||
if (selectedItem != 0) {
|
||||
index = 0;
|
||||
QListViewItem* item = m_listView->firstChild();
|
||||
while (item != selectedItem) {
|
||||
item = item->nextSibling();
|
||||
++index;
|
||||
}
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
void BookmarksSettingsPage::moveBookmark(int direction)
|
||||
{
|
||||
// this implementation currently only allows moving of bookmarks
|
||||
// one step up or down
|
||||
assert((direction >= -1) && (direction <= +1));
|
||||
|
||||
// swap bookmarks in listview
|
||||
QListViewItem* selectedItem = m_listView->selectedItem();
|
||||
assert(selectedItem != 0);
|
||||
QListViewItem* item = (direction < 0) ? selectedItem->itemAbove() :
|
||||
selectedItem->itemBelow();
|
||||
assert(item != 0);
|
||||
|
||||
QPixmap pixmap;
|
||||
if (item->pixmap(0) != 0) {
|
||||
pixmap = *(item->pixmap(0));
|
||||
}
|
||||
QString name(item->text(NameIdx));
|
||||
QString url(item->text(URLIdx));
|
||||
QString icon(item->text(IconIdx));
|
||||
|
||||
if (selectedItem->pixmap(0) != 0) {
|
||||
item->setPixmap(PixmapIdx, *(selectedItem->pixmap(0)));
|
||||
}
|
||||
item->setText(NameIdx, selectedItem->text(NameIdx));
|
||||
item->setText(URLIdx, selectedItem->text(URLIdx));
|
||||
item->setText(IconIdx, selectedItem->text(IconIdx));
|
||||
|
||||
selectedItem->setPixmap(PixmapIdx, pixmap);
|
||||
selectedItem->setText(NameIdx, name);
|
||||
selectedItem->setText(URLIdx, url);
|
||||
selectedItem->setText(IconIdx, icon);
|
||||
|
||||
m_listView->setSelected(item, true);
|
||||
}
|
||||
|
||||
#include "bookmarkssettingspage.moc"
|
@ -0,0 +1,93 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef BOOKMARKSSETTINGSPAGE_H
|
||||
#define BOOKMARKSSETTINGSPAGE_H
|
||||
|
||||
#include <settingspagebase.h>
|
||||
#include <qvaluelist.h>
|
||||
|
||||
class KListView;
|
||||
class KPushButton;
|
||||
class QListViewItem;
|
||||
|
||||
/**
|
||||
* @brief Represents the page from the Dolphin Settings which allows
|
||||
* to modify the bookmarks.
|
||||
*/
|
||||
class BookmarksSettingsPage : public SettingsPageBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
BookmarksSettingsPage(QWidget* parent);
|
||||
|
||||
virtual ~BookmarksSettingsPage();
|
||||
|
||||
/** @see SettingsPageBase::applySettings */
|
||||
virtual void applySettings();
|
||||
|
||||
private slots:
|
||||
void updateButtons();
|
||||
void slotBookmarkDoubleClicked(QListViewItem*, const QPoint&, int);
|
||||
void slotAddButtonClicked();
|
||||
void slotEditButtonClicked();
|
||||
void slotRemoveButtonClicked();
|
||||
void slotMoveUpButtonClicked();
|
||||
void slotMoveDownButtonClicked();
|
||||
|
||||
/**
|
||||
* Is connected with the signal QListView::pressed(QListViewItem* item)
|
||||
* and assures that always one bookmarks stays selected although a
|
||||
* click has been done on the viewport area.
|
||||
* TODO: this is a workaround, possibly there is a more easy approach
|
||||
* doing this...
|
||||
*/
|
||||
void slotBookmarkPressed(QListViewItem* item);
|
||||
|
||||
private:
|
||||
enum ColumnIndex {
|
||||
PixmapIdx = 0,
|
||||
NameIdx = 1,
|
||||
URLIdx = 2,
|
||||
IconIdx = 3
|
||||
};
|
||||
|
||||
KListView* m_listView;
|
||||
KPushButton* m_addButton;
|
||||
KPushButton* m_editButton;
|
||||
KPushButton* m_removeButton;
|
||||
KPushButton* m_moveUpButton;
|
||||
KPushButton* m_moveDownButton;
|
||||
|
||||
/**
|
||||
* Returns the index of the selected bookmark
|
||||
* inside the bookmarks listview.
|
||||
*/
|
||||
int selectedBookmarkIndex() const;
|
||||
|
||||
/**
|
||||
* Moves the currently selected bookmark up, if 'direction'
|
||||
* is < 0, otherwise the bookmark is moved down.
|
||||
*/
|
||||
void moveBookmark(int direction);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,331 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "bookmarkssidebarpage.h"
|
||||
|
||||
#include <qlistbox.h>
|
||||
#include <qlayout.h>
|
||||
#include <qpainter.h>
|
||||
#include <assert.h>
|
||||
#include <qpopupmenu.h>
|
||||
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <klocale.h>
|
||||
#include <kurldrag.h>
|
||||
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphin.h"
|
||||
#include "dolphinview.h"
|
||||
#include "editbookmarkdialog.h"
|
||||
|
||||
BookmarksSidebarPage::BookmarksSidebarPage(QWidget* parent) :
|
||||
SidebarPage(parent)
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
m_bookmarksList = new BookmarksListBox(this);
|
||||
m_bookmarksList->setPaletteBackgroundColor(colorGroup().background());
|
||||
|
||||
layout->addWidget(m_bookmarksList);
|
||||
connect(m_bookmarksList, SIGNAL(mouseButtonClicked(int, QListBoxItem*, const QPoint&)),
|
||||
this, SLOT(slotMouseButtonClicked(int, QListBoxItem*)));
|
||||
connect(m_bookmarksList, SIGNAL(contextMenuRequested(QListBoxItem*, const QPoint&)),
|
||||
this, SLOT(slotContextMenuRequested(QListBoxItem*, const QPoint&)));
|
||||
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
connect(manager, SIGNAL(changed(const QString&, const QString&)),
|
||||
this, SLOT(updateBookmarks()));
|
||||
|
||||
updateBookmarks();
|
||||
}
|
||||
|
||||
BookmarksSidebarPage::~BookmarksSidebarPage()
|
||||
{
|
||||
}
|
||||
|
||||
void BookmarksSidebarPage::activeViewChanged()
|
||||
{
|
||||
connectToActiveView();
|
||||
}
|
||||
|
||||
void BookmarksSidebarPage::updateBookmarks()
|
||||
{
|
||||
m_bookmarksList->clear();
|
||||
|
||||
KIconLoader iconLoader;
|
||||
|
||||
KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
while (!bookmark.isNull()) {
|
||||
m_bookmarksList->insertItem( BookmarkItem::fromKbookmark(bookmark, iconLoader) );
|
||||
|
||||
bookmark = root.next(bookmark);
|
||||
}
|
||||
|
||||
connectToActiveView();
|
||||
}
|
||||
|
||||
void BookmarksSidebarPage::slotMouseButtonClicked(int button, QListBoxItem* item)
|
||||
{
|
||||
if ((button != Qt::LeftButton) || (item == 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const int index = m_bookmarksList->index(item);
|
||||
KBookmark bookmark = DolphinSettings::instance().bookmark(index);
|
||||
Dolphin::mainWin().activeView()->setURL(bookmark.url());
|
||||
}
|
||||
|
||||
void BookmarksSidebarPage::slotContextMenuRequested(QListBoxItem* item,
|
||||
const QPoint& pos)
|
||||
{
|
||||
const int insertID = 1;
|
||||
const int editID = 2;
|
||||
const int deleteID = 3;
|
||||
const int addID = 4;
|
||||
|
||||
QPopupMenu* popup = new QPopupMenu();
|
||||
if (item == 0) {
|
||||
popup->insertItem(SmallIcon("filenew"), i18n("Add Bookmark..."), addID);
|
||||
}
|
||||
else {
|
||||
popup->insertItem(SmallIcon("filenew"), i18n("Insert Bookmark..."), insertID);
|
||||
popup->insertItem(SmallIcon("edit"), i18n("Edit..."), editID);
|
||||
popup->insertItem(SmallIcon("editdelete"), i18n("Delete"), deleteID);
|
||||
}
|
||||
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
KBookmarkGroup root = manager->root();
|
||||
const int index = m_bookmarksList->index(m_bookmarksList->selectedItem());
|
||||
|
||||
const int result = popup->exec(pos);
|
||||
switch (result) {
|
||||
case insertID: {
|
||||
KBookmark newBookmark = EditBookmarkDialog::getBookmark(i18n("Insert Bookmark"),
|
||||
i18n("New bookmark"),
|
||||
KURL(),
|
||||
"bookmark");
|
||||
if (!newBookmark.isNull()) {
|
||||
root.addBookmark(manager, newBookmark);
|
||||
if (index > 0) {
|
||||
KBookmark prevBookmark = DolphinSettings::instance().bookmark(index - 1);
|
||||
root.moveItem(newBookmark, prevBookmark);
|
||||
}
|
||||
else {
|
||||
// insert bookmark at first position (is a little bit tricky as KBookmarkGroup
|
||||
// only allows to move items after existing items)
|
||||
KBookmark firstBookmark = root.first();
|
||||
root.moveItem(newBookmark, firstBookmark);
|
||||
root.moveItem(firstBookmark, newBookmark);
|
||||
}
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case editID: {
|
||||
KBookmark oldBookmark = DolphinSettings::instance().bookmark(index);
|
||||
KBookmark newBookmark = EditBookmarkDialog::getBookmark(i18n("Edit Bookmark"),
|
||||
oldBookmark.text(),
|
||||
oldBookmark.url(),
|
||||
oldBookmark.icon());
|
||||
if (!newBookmark.isNull()) {
|
||||
root.addBookmark(manager, newBookmark);
|
||||
root.moveItem(newBookmark, oldBookmark);
|
||||
root.deleteBookmark(oldBookmark);
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case deleteID: {
|
||||
KBookmark bookmark = DolphinSettings::instance().bookmark(index);
|
||||
root.deleteBookmark(bookmark);
|
||||
manager->emitChanged(root);
|
||||
break;
|
||||
}
|
||||
|
||||
case addID: {
|
||||
KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add Bookmark"),
|
||||
"New bookmark",
|
||||
KURL(),
|
||||
"bookmark");
|
||||
if (!bookmark.isNull()) {
|
||||
root.addBookmark(manager, bookmark);
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
delete popup;
|
||||
popup = 0;
|
||||
|
||||
DolphinView* view = Dolphin::mainWin().activeView();
|
||||
adjustSelection(view->url());
|
||||
}
|
||||
|
||||
|
||||
void BookmarksSidebarPage::adjustSelection(const KURL& url)
|
||||
{
|
||||
// TODO (remarked in dolphin/TODO): the following code is quite equal
|
||||
// to BookmarkSelector::updateSelection().
|
||||
|
||||
KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
|
||||
int maxLength = 0;
|
||||
int selectedIndex = -1;
|
||||
|
||||
// Search the bookmark which is equal to the URL or at least is a parent URL.
|
||||
// If there are more than one possible parent URL candidates, choose the bookmark
|
||||
// which covers the bigger range of the URL.
|
||||
int i = 0;
|
||||
while (!bookmark.isNull()) {
|
||||
const KURL bookmarkURL = bookmark.url();
|
||||
if (bookmarkURL.isParentOf(url)) {
|
||||
const int length = bookmarkURL.prettyURL().length();
|
||||
if (length > maxLength) {
|
||||
selectedIndex = i;
|
||||
maxLength = length;
|
||||
}
|
||||
}
|
||||
bookmark = root.next(bookmark);
|
||||
++i;
|
||||
}
|
||||
|
||||
const bool block = m_bookmarksList->signalsBlocked();
|
||||
m_bookmarksList->blockSignals(true);
|
||||
if (selectedIndex < 0) {
|
||||
// no bookmark matches, hence deactivate any selection
|
||||
const int currentIndex = m_bookmarksList->index(m_bookmarksList->selectedItem());
|
||||
m_bookmarksList->setSelected(currentIndex, false);
|
||||
}
|
||||
else {
|
||||
// select the bookmark which is part of the current URL
|
||||
m_bookmarksList->setSelected(selectedIndex, true);
|
||||
}
|
||||
m_bookmarksList->blockSignals(block);
|
||||
}
|
||||
|
||||
void BookmarksSidebarPage::slotURLChanged(const KURL& url)
|
||||
{
|
||||
adjustSelection(url);
|
||||
}
|
||||
|
||||
void BookmarksSidebarPage::connectToActiveView()
|
||||
{
|
||||
DolphinView* view = Dolphin::mainWin().activeView();
|
||||
adjustSelection(view->url());
|
||||
connect(view, SIGNAL(signalURLChanged(const KURL&)),
|
||||
this, SLOT(slotURLChanged(const KURL&)));
|
||||
}
|
||||
|
||||
BookmarksListBox::BookmarksListBox(QWidget* parent) :
|
||||
QListBox(parent)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
BookmarksListBox::~BookmarksListBox()
|
||||
{
|
||||
}
|
||||
|
||||
void BookmarksListBox::paintEvent(QPaintEvent* /* event */)
|
||||
{
|
||||
// don't invoke QListBox::paintEvent(event) to prevent
|
||||
// that any kind of frame is drawn
|
||||
}
|
||||
|
||||
void BookmarksListBox::contentsMousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if (event->button() == LeftButton)
|
||||
dragPos = event->pos();
|
||||
QListBox::contentsMousePressEvent(event);
|
||||
}
|
||||
|
||||
void BookmarksListBox::contentsMouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
if (event->state() & LeftButton) {
|
||||
int distance = (event->pos() - dragPos).manhattanLength();
|
||||
if (distance > QApplication::startDragDistance())
|
||||
startDrag();
|
||||
}
|
||||
QListBox::contentsMouseMoveEvent(event);
|
||||
}
|
||||
|
||||
void BookmarksListBox::startDrag()
|
||||
{
|
||||
int currentItem = QListBox::currentItem();
|
||||
if (currentItem != -1) {
|
||||
BookmarkItem* bookmark = (BookmarkItem*)item(currentItem);
|
||||
if (bookmark!=0){
|
||||
KURL::List lst;
|
||||
lst.append( bookmark->url() );
|
||||
KURLDrag *drag = new KURLDrag(lst, this);
|
||||
drag->drag();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BookmarksListBox::dragEnterEvent( QDragEnterEvent *event )
|
||||
{
|
||||
event->accept(KURLDrag::canDecode(event));
|
||||
}
|
||||
|
||||
void BookmarksListBox::dropEvent( QDropEvent *event )
|
||||
{
|
||||
KURL::List urls;
|
||||
if (KURLDrag::decode(event, urls) && !urls.isEmpty()) {
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
KBookmarkGroup root = manager->root();
|
||||
|
||||
KURL::List::iterator it;
|
||||
for(it=urls.begin(); it!=urls.end(); ++it) {
|
||||
root.addBookmark(manager, (*it).fileName(), (*it), "", false);
|
||||
}
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
}
|
||||
|
||||
BookmarkItem::BookmarkItem(const QPixmap& pixmap, const QString& text, const KURL& url) :
|
||||
QListBoxPixmap(pixmap, text),
|
||||
m_url(url)
|
||||
{
|
||||
}
|
||||
|
||||
BookmarkItem::~BookmarkItem()
|
||||
{
|
||||
}
|
||||
|
||||
int BookmarkItem::height(const QListBox* listBox) const
|
||||
{
|
||||
return QListBoxPixmap::height(listBox) + 8;
|
||||
}
|
||||
|
||||
const KURL& BookmarkItem::url() const
|
||||
{
|
||||
return m_url;
|
||||
}
|
||||
|
||||
BookmarkItem* BookmarkItem::fromKbookmark(const KBookmark& bookmark, const KIconLoader& iconLoader)
|
||||
{
|
||||
QPixmap icon(iconLoader.loadIcon(bookmark.icon(), KIcon::NoGroup, KIcon::SizeMedium));
|
||||
return new BookmarkItem(icon, bookmark.text(), bookmark.url());
|
||||
}
|
@ -0,0 +1,139 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef _BOOKMARKSSIDEBARPAGE_H_
|
||||
#define _BOOKMARKSSIDEBARPAGE_H_
|
||||
|
||||
#include <sidebarpage.h>
|
||||
#include <qlistbox.h>
|
||||
#include <kurl.h>
|
||||
#include <kbookmark.h>
|
||||
#include <kiconloader.h>
|
||||
|
||||
class BookmarksListBox;
|
||||
|
||||
/**
|
||||
* @brief Sidebar page for accessing bookmarks.
|
||||
*
|
||||
* It is possible to add, remove and edit bookmarks
|
||||
* by a context menu. The selection of the bookmark
|
||||
* is automatically adjusted to the URL given by
|
||||
* the active view.
|
||||
*/
|
||||
class BookmarksSidebarPage : public SidebarPage
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
BookmarksSidebarPage(QWidget* parent);
|
||||
virtual ~BookmarksSidebarPage();
|
||||
|
||||
protected:
|
||||
/** @see SidebarPage::activeViewChanged() */
|
||||
virtual void activeViewChanged();
|
||||
|
||||
private slots:
|
||||
/** Fills the listbox with the bookmarks stored in DolphinSettings. */
|
||||
void updateBookmarks();
|
||||
|
||||
/**
|
||||
* Checks whether the left mouse button has been clicked above a bookmark.
|
||||
* If this is the case, the URL for the currently active view is adjusted.
|
||||
*/
|
||||
void slotMouseButtonClicked(int button, QListBoxItem* item);
|
||||
|
||||
/** @see QListBox::slotContextMenuRequested */
|
||||
void slotContextMenuRequested(QListBoxItem* item, const QPoint& pos);
|
||||
|
||||
/**
|
||||
* Is invoked whenever the URL of the active view has been changed. Adjusts
|
||||
* the selection of the listbox to the bookmark which is part of the current URL.
|
||||
*/
|
||||
void slotURLChanged(const KURL& url);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Updates the selection dependent from the given URL \a url. The
|
||||
* URL must not match exactly to one of the available bookmarks:
|
||||
* The bookmark which is equal to the URL or at least is a parent URL
|
||||
* is selected. If there are more than one possible parent URL candidates,
|
||||
* the bookmark which covers the bigger range of the URL is selected.
|
||||
*/
|
||||
void adjustSelection(const KURL& url);
|
||||
|
||||
/**
|
||||
* Connects to signals from the currently active Dolphin view to get
|
||||
* informed about URL and bookmark changes.
|
||||
*/
|
||||
void connectToActiveView();
|
||||
|
||||
BookmarksListBox* m_bookmarksList;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Listbox which contains a list of bookmarks.
|
||||
*
|
||||
* Only QListBox::paintEvent() has been overwritten to prevent
|
||||
* that a (not wanted) frameborder is drawn.
|
||||
*/
|
||||
class BookmarksListBox : public QListBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
BookmarksListBox(QWidget* parent);
|
||||
virtual ~BookmarksListBox();
|
||||
|
||||
protected:
|
||||
//drag
|
||||
void contentsMousePressEvent(QMouseEvent *event);
|
||||
void contentsMouseMoveEvent(QMouseEvent *event);
|
||||
//drop
|
||||
void dragEnterEvent( QDragEnterEvent *evt );
|
||||
void dropEvent( QDropEvent *evt );
|
||||
// void mousePressEvent( QMouseEvent *evt );
|
||||
// void mouseMoveEvent( QMouseEvent * );
|
||||
/** @see QWidget::paintEvent() */
|
||||
virtual void paintEvent(QPaintEvent* event);
|
||||
private:
|
||||
QPoint dragPos;
|
||||
|
||||
void startDrag();
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Item which can be added to a BookmarksListBox.
|
||||
*
|
||||
* Only QListBoxPixmap::height() has been overwritten to get
|
||||
* a spacing between the items.
|
||||
*/
|
||||
class BookmarkItem : public QListBoxPixmap
|
||||
{
|
||||
public:
|
||||
BookmarkItem(const QPixmap& pixmap, const QString& text, const KURL& url);
|
||||
virtual ~BookmarkItem();
|
||||
virtual int height(const QListBox* listBox) const;
|
||||
const KURL& url() const;
|
||||
|
||||
static BookmarkItem* fromKbookmark(const KBookmark& bookmark, const KIconLoader& iconLoader);
|
||||
|
||||
private:
|
||||
KURL m_url;
|
||||
};
|
||||
|
||||
#endif // _BOOKMARKSSIDEBARPAGE_H_
|
@ -0,0 +1,65 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Dolphin
|
||||
Name[pa]=ਡਾਲਫਿਨ
|
||||
Name[sr]=Делфин
|
||||
Name[sr@latin]=Делфин
|
||||
Name[uk]=Дельфін
|
||||
Name[ar]=الدولفين
|
||||
Name[lv]= Dolphin
|
||||
Name[ne]=डल्फिन
|
||||
Name[pa]=ਡਾਲਫਿਨ
|
||||
Exec=d3lphin %i -caption "%c" "%u"
|
||||
Icon=d3lphin
|
||||
Type=Application
|
||||
DocPath=d3lphin/d3lphin.html
|
||||
Categories=Qt;KDE;System;FileManager;
|
||||
GenericName=File Manager
|
||||
GenericName[ar]=مدير الملفات
|
||||
GenericName[be]=Кіраўнік файлаў
|
||||
GenericName[bg]=Файлов браузър
|
||||
GenericName[ca]=Gestor de fitxers
|
||||
GenericName[cs]=Správce souborů
|
||||
GenericName[csb]=Menadżer lopków
|
||||
GenericName[de]=Dateimanager
|
||||
GenericName[el]=Διαχειριστής αρχείων
|
||||
GenericName[eo]=Dosieradministrilo
|
||||
GenericName[es]=Gestor de ficheros
|
||||
GenericName[et]=Failihaldur
|
||||
GenericName[eu]=Fitxategi kudeatzailea
|
||||
GenericName[fa]=مدیر پرونده
|
||||
GenericName[ga]=Bainisteoir Comhad
|
||||
GenericName[he]=מנהל קבצים
|
||||
GenericName[hu]=Fájlkezelő
|
||||
GenericName[it]=Gestione file
|
||||
GenericName[ja]=ファイルマネージャ
|
||||
GenericName[kk]=Файл менеджері
|
||||
GenericName[km]=កម្មវិធីគ្រប់គ្រងឯកសារ
|
||||
GenericName[ko]=파일 관리자
|
||||
GenericName[lv]=Failu pārvaldnieks
|
||||
GenericName[nb]=Filbehandler
|
||||
GenericName[nds]=Dateipleger
|
||||
GenericName[ne]=फाइल प्रबन्धक
|
||||
GenericName[nl]=Bestandsbeheerder
|
||||
GenericName[nn]=Filhandsamar
|
||||
GenericName[oc]=Gestionari de fichièrs
|
||||
GenericName[pa]=ਫਾਇਲ ਮੈਨੇਜਰ
|
||||
GenericName[pl]=Menedżer plików
|
||||
GenericName[pt]=Gestor de Ficheiros
|
||||
GenericName[pt_BR]=Gerenciador de Arquivos
|
||||
GenericName[ru]=Файловый менеджер
|
||||
GenericName[sl]=Upravitelj datotek
|
||||
GenericName[sr]=Менаџер фајлова
|
||||
GenericName[sr@latin]=Menadžer fajlova
|
||||
GenericName[sv]=Filhanterare
|
||||
GenericName[tg]=Мудири файл
|
||||
GenericName[th]=เครื่องมือจัดการแฟ้ม
|
||||
GenericName[uk]=Менеджер файлів
|
||||
GenericName[vi]=Bộ quản lý tập tin
|
||||
GenericName[wa]=Manaedjeu di fitchîs
|
||||
GenericName[x-test]=xxFile Managerxx
|
||||
GenericName[zh_CN]=文件管理器
|
||||
GenericName[zh_TW]=檔案管理程式
|
||||
Terminal=false
|
||||
MimeType=inode/directory;
|
||||
InitialPreference=10
|
@ -0,0 +1,110 @@
|
||||
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
||||
<kpartgui version="1" name="d3lphin" >
|
||||
<MenuBar>
|
||||
<Menu name="file" >
|
||||
<Menu name="create_new" >
|
||||
<text>Create New</text>
|
||||
<Action name="create_folder" />
|
||||
<Separator/>
|
||||
<ActionList name="create_file_group" />
|
||||
</Menu>
|
||||
<Separator/>
|
||||
<Action name="rename" />
|
||||
<Action name="move_to_trash" />
|
||||
<Action name="delete" />
|
||||
<Separator/>
|
||||
<Action name="properties" />
|
||||
</Menu>
|
||||
<Menu name="edit" >
|
||||
<Action name="select_all" />
|
||||
<Action name="invert_selection" />
|
||||
</Menu>
|
||||
<Menu name="view" >
|
||||
<Menu name="view_mode" >
|
||||
<text>View Mode</text>
|
||||
<Action name="icons" />
|
||||
<Action name="details" />
|
||||
<Action name="previews" />
|
||||
</Menu>
|
||||
<Menu name="sort" >
|
||||
<text>Sort</text>
|
||||
<Action name="by_name" />
|
||||
<Action name="by_size" />
|
||||
<Action name="by_date" />
|
||||
<Separator/>
|
||||
<Action name="descending" />
|
||||
</Menu>
|
||||
<Action name="show_hidden_files" />
|
||||
<Separator/>
|
||||
<Action name="split_view" />
|
||||
<Action name="reload" />
|
||||
<Action name="stop" />
|
||||
<Separator/>
|
||||
<Menu name="navigation_bar" >
|
||||
<text>Navigation Bar</text>
|
||||
<Action name="edit_location" />
|
||||
<Action name="browse" />
|
||||
</Menu>
|
||||
<Action name="leftsidebar" />
|
||||
<Action name="rightsidebar" />
|
||||
<Action name="view_properties" />
|
||||
</Menu>
|
||||
<Menu name="tools">
|
||||
<Action name="open_terminal" />
|
||||
<Action name="find_file" />
|
||||
<Action name="show_filter_bar" />
|
||||
<Action name="compare_files" />
|
||||
</Menu>
|
||||
</MenuBar>
|
||||
<State name="new_file" >
|
||||
<disable>
|
||||
<Action name="edit_undo" />
|
||||
<Action name="edit_redo" />
|
||||
<Action name="edit_cut" />
|
||||
<Action name="edit_copy" />
|
||||
<Action name="rename" />
|
||||
<Action name="move_to_trash" />
|
||||
<Action name="delete" />
|
||||
<Action name="invert_selection" />
|
||||
<Separator/>
|
||||
<Action name="properties" />
|
||||
<Action name="go_back" />
|
||||
<Action name="go_forward" />
|
||||
</disable>
|
||||
</State>
|
||||
<State name="has_selection" >
|
||||
<enable>
|
||||
<Action name="edit_cut" />
|
||||
<Action name="edit_copy" />
|
||||
<Action name="move_to_trash" />
|
||||
<Action name="delete" />
|
||||
<Action name="properties" />
|
||||
<Action name="invert_selection" />
|
||||
</enable>
|
||||
</State>
|
||||
<State name="has_no_selection" >
|
||||
<disable>
|
||||
<Action name="edit_cut" />
|
||||
<Action name="edit_copy" />
|
||||
<Action name="rename" />
|
||||
<Action name="move_to_trash" />
|
||||
<Action name="delete" />
|
||||
<Action name="properties" />
|
||||
<Action name="invert_selection" />
|
||||
</disable>
|
||||
</State>
|
||||
<ToolBar noMerge="1" name="mainToolBar" >
|
||||
<text>Main Toolbar</text>
|
||||
<Action name="go_back" />
|
||||
<Action name="go_forward" />
|
||||
<Separator name="separator_1" />
|
||||
<Action name="icons" />
|
||||
<Action name="details" />
|
||||
<Action name="previews" />
|
||||
<Separator name="separator_0" />
|
||||
<Action name="split_view" />
|
||||
</ToolBar>
|
||||
<ActionProperties>
|
||||
<Action shortcut="Backspace;XF86Back" name="go_back" />
|
||||
</ActionProperties>
|
||||
</kpartgui>
|
@ -0,0 +1,155 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "detailsviewsettingspage.h"
|
||||
#include <qcheckbox.h>
|
||||
#include <klocale.h>
|
||||
#include <kdialog.h>
|
||||
#include <kfontcombo.h>
|
||||
#include <qspinbox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qgrid.h>
|
||||
#include <assert.h>
|
||||
#include <qbuttongroup.h>
|
||||
#include <qradiobutton.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qgroupbox.h>
|
||||
#include <qgroupbox.h>
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphindetailsviewsettings.h"
|
||||
#include "dolphindetailsview.h"
|
||||
|
||||
DetailsViewSettingsPage::DetailsViewSettingsPage(QWidget *parent) :
|
||||
QVBox(parent),
|
||||
m_dateBox(0),
|
||||
m_permissionsBox(0),
|
||||
m_ownerBox(0),
|
||||
m_groupBox(0),
|
||||
m_smallIconSize(0),
|
||||
m_mediumIconSize(0),
|
||||
m_largeIconSize(0)
|
||||
{
|
||||
const int spacing = KDialog::spacingHint();
|
||||
const int margin = KDialog::marginHint();
|
||||
const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
setSpacing(spacing);
|
||||
setMargin(margin);
|
||||
|
||||
DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
assert(settings != 0);
|
||||
|
||||
// create "Columns" properties
|
||||
QGroupBox* columnsGroup = new QGroupBox(4, Qt::Vertical, i18n("Columns"), this);
|
||||
columnsGroup->setSizePolicy(sizePolicy);
|
||||
columnsGroup->setMargin(margin);
|
||||
|
||||
QHBox* visibleColumnsLayout = new QHBox(columnsGroup);
|
||||
m_dateBox = new QCheckBox(i18n("Date"), visibleColumnsLayout);
|
||||
m_dateBox->setChecked(settings->isColumnEnabled(DolphinDetailsView::DateColumn));
|
||||
|
||||
m_permissionsBox = new QCheckBox(i18n("Permissions"), visibleColumnsLayout);
|
||||
m_permissionsBox->setChecked(settings->isColumnEnabled(DolphinDetailsView::PermissionsColumn));
|
||||
|
||||
m_ownerBox = new QCheckBox(i18n("Owner"), visibleColumnsLayout);
|
||||
m_ownerBox->setChecked(settings->isColumnEnabled(DolphinDetailsView::OwnerColumn));
|
||||
|
||||
m_groupBox = new QCheckBox(i18n("Group"), visibleColumnsLayout);
|
||||
m_groupBox->setChecked(settings->isColumnEnabled(DolphinDetailsView::GroupColumn));
|
||||
|
||||
// Create "Icon" properties
|
||||
QButtonGroup* iconSizeGroup = new QButtonGroup(3, Qt::Horizontal, i18n("Icon Size"), this);
|
||||
iconSizeGroup->setSizePolicy(sizePolicy);
|
||||
iconSizeGroup->setMargin(margin);
|
||||
m_smallIconSize = new QRadioButton(i18n("Small"), iconSizeGroup);
|
||||
m_mediumIconSize = new QRadioButton(i18n("Medium"), iconSizeGroup);
|
||||
m_largeIconSize = new QRadioButton(i18n("Large"), iconSizeGroup);
|
||||
switch (settings->iconSize()) {
|
||||
case KIcon::SizeLarge:
|
||||
m_largeIconSize->setChecked(true);
|
||||
break;
|
||||
|
||||
case KIcon::SizeMedium:
|
||||
m_mediumIconSize->setChecked(true);
|
||||
break;
|
||||
|
||||
case KIcon::SizeSmall:
|
||||
default:
|
||||
m_smallIconSize->setChecked(true);
|
||||
}
|
||||
|
||||
//new QLabel(i18n("Icon size:"), iconGroup);
|
||||
//m_iconSizeBox = new QComboBox(iconGroup);
|
||||
//m_iconSizeBox->insertItem(i18n("Small"));
|
||||
//m_iconSizeBox->insertItem(i18n("Medium"));
|
||||
//m_iconSizeBox->insertItem(i18n("Large"));
|
||||
|
||||
// create "Text" properties
|
||||
QGroupBox* textGroup = new QGroupBox(2, Qt::Horizontal, i18n("Text"), this);
|
||||
textGroup->setSizePolicy(sizePolicy);
|
||||
textGroup->setMargin(margin);
|
||||
|
||||
new QLabel(i18n("Font family:"), textGroup);
|
||||
m_fontFamilyBox = new KFontCombo(textGroup);
|
||||
m_fontFamilyBox->setCurrentFont(settings->fontFamily());
|
||||
|
||||
new QLabel(i18n("Font size:"), textGroup);
|
||||
m_fontSizeBox = new QSpinBox(6, 99, 1, textGroup);
|
||||
m_fontSizeBox->setValue(settings->fontSize());
|
||||
|
||||
// Add a dummy widget with no restriction regarding
|
||||
// a vertical resizing. This assures that the dialog layout
|
||||
// is not stretched vertically.
|
||||
new QWidget(this);
|
||||
}
|
||||
|
||||
|
||||
DetailsViewSettingsPage::~DetailsViewSettingsPage()
|
||||
{
|
||||
}
|
||||
|
||||
void DetailsViewSettingsPage::applySettings()
|
||||
{
|
||||
DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
assert(settings != 0);
|
||||
|
||||
settings->setColumnEnabled(DolphinDetailsView::DateColumn,
|
||||
m_dateBox->isChecked());
|
||||
settings->setColumnEnabled(DolphinDetailsView::PermissionsColumn,
|
||||
m_permissionsBox->isChecked());
|
||||
settings->setColumnEnabled(DolphinDetailsView::OwnerColumn,
|
||||
m_ownerBox->isChecked());
|
||||
settings->setColumnEnabled(DolphinDetailsView::GroupColumn,
|
||||
m_groupBox->isChecked());
|
||||
|
||||
int iconSize = KIcon::SizeSmall;
|
||||
if (m_mediumIconSize->isChecked()) {
|
||||
iconSize = KIcon::SizeMedium;
|
||||
}
|
||||
else if (m_largeIconSize->isChecked()) {
|
||||
iconSize = KIcon::SizeLarge;
|
||||
}
|
||||
settings->setIconSize(iconSize);
|
||||
|
||||
settings->setFontFamily(m_fontFamilyBox->currentFont());
|
||||
settings->setFontSize(m_fontSizeBox->value());
|
||||
}
|
||||
|
||||
#include "detailsviewsettingspage.moc"
|
@ -0,0 +1,65 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DETAILSVIEWSETTINGSPAGE_H
|
||||
#define DETAILSVIEWSETTINGSPAGE_H
|
||||
|
||||
#include <qvbox.h>
|
||||
class QCheckBox;
|
||||
class KFontCombo;
|
||||
class QSpinBox;
|
||||
class QComboBox;
|
||||
class QRadioButton;
|
||||
|
||||
/**
|
||||
* @brief Represents the page from the Dolphin Settings which allows
|
||||
* to modify the settings for the details view.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DetailsViewSettingsPage : public QVBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DetailsViewSettingsPage(QWidget* parent);
|
||||
virtual ~DetailsViewSettingsPage();
|
||||
|
||||
/**
|
||||
* Applies the settings for the details view.
|
||||
* The settings are persisted automatically when
|
||||
* closing Dolphin.
|
||||
*/
|
||||
void applySettings();
|
||||
|
||||
private:
|
||||
QCheckBox* m_dateBox;
|
||||
QCheckBox* m_permissionsBox;
|
||||
QCheckBox* m_ownerBox;
|
||||
QCheckBox* m_groupBox;
|
||||
QRadioButton* m_smallIconSize;
|
||||
QRadioButton* m_mediumIconSize;
|
||||
QRadioButton* m_largeIconSize;
|
||||
|
||||
KFontCombo* m_fontFamilyBox;
|
||||
QSpinBox* m_fontSizeBox;
|
||||
};
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,456 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* Copyright (C) 2006 by Stefan Monov <logixoul@gmail.com> *
|
||||
* Copyright (C) 2006 by Cvetoslav Ludmiloff <ludmiloff@gmail.com> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _DOLPHIN_H_
|
||||
#define _DOLPHIN_H_
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <kapplication.h>
|
||||
#include <kmainwindow.h>
|
||||
#include <qvaluelist.h>
|
||||
#include <qptrlist.h>
|
||||
#include <qstring.h>
|
||||
#include <ksortablevaluelist.h>
|
||||
|
||||
#include "dolphinview.h"
|
||||
#include "undomanager.h"
|
||||
|
||||
class KPrinter;
|
||||
class KURL;
|
||||
class QLineEdit;
|
||||
class KFileIconView;
|
||||
class QHBox;
|
||||
class QIconViewItem;
|
||||
class QSplitter;
|
||||
class KAction;
|
||||
class URLNavigator;
|
||||
class leftSidebar;
|
||||
class rightSidebar;
|
||||
|
||||
/**
|
||||
* @short Main window for Dolphin.
|
||||
*
|
||||
* Handles the menus, toolbars and Dolphin views.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class Dolphin : public KMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* Returns the instance for the Dolphin main window.
|
||||
*/
|
||||
// KXMLGUIClient::instance() already in use :-(
|
||||
static Dolphin& mainWin();
|
||||
|
||||
virtual ~Dolphin();
|
||||
|
||||
/**
|
||||
* Activates the given view, which means that
|
||||
* all menu actions are applied to this view. When
|
||||
* having a split view setup the nonactive view
|
||||
* is usually shown in darker colors.
|
||||
*/
|
||||
void setActiveView(DolphinView* view);
|
||||
|
||||
/**
|
||||
* Returns the currently active view. See
|
||||
* Dolphin::setActiveView() for more details.
|
||||
*/
|
||||
DolphinView* activeView() const { return m_activeView; }
|
||||
|
||||
/**
|
||||
* Handles the dropping of URLs to the given
|
||||
* destination. A context menu with the options
|
||||
* 'Move Here', 'Copy Here', 'Link Here' and
|
||||
* 'Cancel' is offered to the user.
|
||||
* @param urls List of URLs which have been
|
||||
* dropped.
|
||||
* @param destination Destination URL, where the
|
||||
* list or URLs should be moved,
|
||||
* copied or linked to.
|
||||
*/
|
||||
void dropURLs(const KURL::List& urls,
|
||||
const KURL& destination);
|
||||
|
||||
/**
|
||||
* Returns 'true', if the clipboard contains data
|
||||
* which has been cutted by the Cut action (Ctrl + X).
|
||||
*/
|
||||
bool clipboardContainsCutData() const { return m_clipboardContainsCutData; }
|
||||
|
||||
/**
|
||||
* Returns the list of actions which are part of the file group
|
||||
* of the 'Create New...' sub menu. Usually the list contains actions
|
||||
* for creating folders, text files, HTML files etc.
|
||||
*/
|
||||
const QPtrList<KAction>& fileGroupActions() const { return m_fileGroupActions; }
|
||||
//const QPtrList<KAction>& linkGroupActions() const { return m_linkGroupActions; }
|
||||
//const QPtrList<KAction>& linkToDeviceActions() const { return m_linkToDeviceActions; }
|
||||
|
||||
/**
|
||||
* Refreshs the views of the main window by recreating them dependent from
|
||||
* the given Dolphin settings.
|
||||
*/
|
||||
void refreshViews();
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Is send if the active view has been changed in
|
||||
* the split view mode.
|
||||
*/
|
||||
void activeViewChanged();
|
||||
|
||||
/**
|
||||
* Is send if the selection of the currently active view has
|
||||
* been changed.
|
||||
*/
|
||||
void selectionChanged();
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* Updates the state of the 'Back' and 'Forward' menu
|
||||
* actions corresponding the the current history.
|
||||
*/
|
||||
void slotHistoryChanged();
|
||||
|
||||
/**
|
||||
* Updates the caption of the main window and the state
|
||||
* of all menu actions which depend from a changed URL.
|
||||
*/
|
||||
void slotURLChanged(const KURL& url);
|
||||
|
||||
/**
|
||||
* Go to the given URL.
|
||||
*/
|
||||
void slotURLChangeRequest(const KURL& url);
|
||||
|
||||
/** Updates the state of all 'View' menu actions. */
|
||||
void slotViewModeChanged();
|
||||
|
||||
/** Updates the state of the 'Show hidden files' menu action. */
|
||||
void slotShowHiddenFilesChanged();
|
||||
|
||||
/** Updates the state of the 'Show filter bar' menu action. */
|
||||
void slotShowFilterBarChanged();
|
||||
|
||||
/** Updates the state of the 'Sort by' actions. */
|
||||
void slotSortingChanged(DolphinView::Sorting sorting);
|
||||
|
||||
/** Updates the state of the 'Sort Ascending/Descending' action. */
|
||||
void slotSortOrderChanged(Qt::SortOrder order);
|
||||
|
||||
/** Updates the state of the 'Edit' menu actions. */
|
||||
void slotSelectionChanged();
|
||||
|
||||
protected:
|
||||
/** @see QMainWindow::closeEvent */
|
||||
virtual void closeEvent(QCloseEvent* event);
|
||||
|
||||
/**
|
||||
* This method is called when it is time for the app to save its
|
||||
* properties for session management purposes.
|
||||
*/
|
||||
void saveProperties(KConfig*);
|
||||
|
||||
/**
|
||||
* This method is called when this app is restored. The KConfig
|
||||
* object points to the session management config file that was saved
|
||||
* with @ref saveProperties
|
||||
*/
|
||||
void readProperties(KConfig*);
|
||||
|
||||
private slots:
|
||||
/** Opens an input dialog for creating a new folder. */
|
||||
void createFolder();
|
||||
|
||||
/** Creates a file with the MIME type given by the sender. */
|
||||
void createFile();
|
||||
|
||||
/** Renames the selected item of the active view. */
|
||||
void rename();
|
||||
|
||||
/** Moves the selected items of the active view to the trash. */
|
||||
void moveToTrash();
|
||||
|
||||
/** Deletes the selected items of the active view. */
|
||||
void deleteItems();
|
||||
|
||||
/**
|
||||
* Opens the properties window for the selected items of the
|
||||
* active view. The properties windows shows informations
|
||||
* like name, size and permissions.
|
||||
*/
|
||||
void properties();
|
||||
|
||||
/** Stores all settings and quits Dolphin. */
|
||||
void quit();
|
||||
|
||||
/**
|
||||
* Shows the error information of the job \a job
|
||||
* in the status bar.
|
||||
*/
|
||||
void slotHandleJobError(KIO::Job* job);
|
||||
|
||||
/**
|
||||
* Indicates in the status bar that the delete operation
|
||||
* of the job \a job has been finished.
|
||||
*/
|
||||
void slotDeleteFileFinished(KIO::Job* job);
|
||||
|
||||
/**
|
||||
* Updates the state of the 'Undo' menu action dependent
|
||||
* from the parameter \a available.
|
||||
*/
|
||||
void slotUndoAvailable(bool available);
|
||||
|
||||
/** Sets the text of the 'Undo' menu action to \a text. */
|
||||
void slotUndoTextChanged(const QString& text);
|
||||
|
||||
/**
|
||||
* Updates the state of the 'Redo' menu action dependent
|
||||
* from the parameter \a available.
|
||||
*/
|
||||
void slotRedoAvailable(bool available);
|
||||
|
||||
/** Sets the text of the 'Redo' menu action to \a text. */
|
||||
void slotRedoTextChanged(const QString& text);
|
||||
|
||||
/**
|
||||
* Copies all selected items to the clipboard and marks
|
||||
* the items as cutted.
|
||||
*/
|
||||
void cut();
|
||||
|
||||
/** Copies all selected items to the clipboard. */
|
||||
void copy();
|
||||
|
||||
/** Pastes the clipboard data to the active view. */
|
||||
void paste();
|
||||
|
||||
/**
|
||||
* Updates the text of the paste action dependent from
|
||||
* the number of items which are in the clipboard.
|
||||
*/
|
||||
void updatePasteAction();
|
||||
|
||||
/** Selects all items from the active view. */
|
||||
void selectAll();
|
||||
|
||||
/**
|
||||
* Inverts the selection of all items of the active view:
|
||||
* Selected items get nonselected and nonselected items get
|
||||
* selected.
|
||||
*/
|
||||
void invertSelection();
|
||||
|
||||
/** The current active view is switched to the icons mode. */
|
||||
void setIconsView();
|
||||
|
||||
/** The current active view is switched to the details mode. */
|
||||
void setDetailsView();
|
||||
|
||||
/** The current active view is switched to the previews mode. */
|
||||
void setPreviewsView();
|
||||
|
||||
/** The sorting of the current view should be done by the name. */
|
||||
void sortByName();
|
||||
|
||||
/** The sorting of the current view should be done by the size. */
|
||||
void sortBySize();
|
||||
|
||||
/** The sorting of the current view should be done by the date. */
|
||||
void sortByDate();
|
||||
|
||||
/** Switches between an ascending and descending sorting order. */
|
||||
void toggleSortOrder();
|
||||
|
||||
/**
|
||||
* Switches between one and two views:
|
||||
* If one view is visible, it will get split into two views.
|
||||
* If already two views are visible, the nonactivated view gets closed.
|
||||
*/
|
||||
void toggleSplitView();
|
||||
|
||||
/** Reloads the current active view. */
|
||||
void reloadView();
|
||||
|
||||
/** Stops the loading process for the current active view. */
|
||||
void stopLoading();
|
||||
|
||||
/**
|
||||
* Switches between showing and hiding of hidden marked files dependent
|
||||
* from the current state of the 'Show Hidden Files' menu toggle action.
|
||||
*/
|
||||
void showHiddenFiles();
|
||||
|
||||
/**
|
||||
* Switches between showing and hiding of the filter bar dependent
|
||||
* from the current state of the 'Show Filter Bar' menu toggle action.
|
||||
*/
|
||||
void showFilterBar();
|
||||
|
||||
/** Increases the size of the current set view mode. */
|
||||
void zoomIn();
|
||||
|
||||
/** Decreases the size of the current set view mode. */
|
||||
void zoomOut();
|
||||
|
||||
/**
|
||||
* Switches to the edit mode of the navigation bar. If the edit mode is
|
||||
* already active, it is assured that the navigation bar get focused.
|
||||
*/
|
||||
void editLocation();
|
||||
|
||||
/** Switches to the browse mode of the navigation bar. */
|
||||
void browse();
|
||||
|
||||
/**
|
||||
* Opens the view properties dialog, which allows to modify the properties
|
||||
* of the currently active view.
|
||||
*/
|
||||
void adjustViewProperties();
|
||||
|
||||
/** Goes back on step of the URL history. */
|
||||
void goBack();
|
||||
|
||||
/** Goes forward one step of the URL history. */
|
||||
void goForward();
|
||||
|
||||
/** Goes up one hierarchy of the current URL. */
|
||||
void goUp();
|
||||
|
||||
/** Goes to the home URL. */
|
||||
void goHome();
|
||||
|
||||
/** Opens a terminal for the current shown directory. */
|
||||
void openTerminal();
|
||||
|
||||
/** Opens KFind for the current shown directory. */
|
||||
void findFile();
|
||||
|
||||
/** Opens Kompare for 2 selected files. */
|
||||
void compareFiles();
|
||||
|
||||
/** Opens the settings dialog for Dolphin. */
|
||||
void editSettings();
|
||||
|
||||
/**
|
||||
* Adds the undo operation given by \a job
|
||||
* to the UndoManager.
|
||||
*/
|
||||
void addUndoOperation(KIO::Job* job);
|
||||
|
||||
|
||||
void toggleleftSidebar();
|
||||
void togglerightSidebar();
|
||||
|
||||
/**
|
||||
* Stores the current sidebar width and closes
|
||||
* the sidebar.
|
||||
*/
|
||||
void closeleftSidebar();
|
||||
void closerightSidebar();
|
||||
|
||||
private:
|
||||
Dolphin();
|
||||
void init();
|
||||
void loadSettings();
|
||||
|
||||
void setupAccel();
|
||||
void setupActions();
|
||||
void setupCreateNewMenuActions();
|
||||
void updateHistory();
|
||||
void updateEditActions();
|
||||
void updateViewActions();
|
||||
void updateGoActions();
|
||||
void updateViewProperties(const KURL::List& urls);
|
||||
void copyURLs(const KURL::List& source, const KURL& dest);
|
||||
void moveURLs(const KURL::List& source, const KURL& dest);
|
||||
void addPendingUndoJob(KIO::Job* job,
|
||||
DolphinCommand::Type commandType,
|
||||
const KURL::List& source,
|
||||
const KURL& dest);
|
||||
void clearStatusBar();
|
||||
void openleftSidebar();
|
||||
void openrightSidebar();
|
||||
|
||||
QSplitter* m_splitter;
|
||||
leftSidebar* m_leftsidebar;
|
||||
rightSidebar* m_rightsidebar;
|
||||
DolphinView* m_activeView;
|
||||
|
||||
/**
|
||||
* Dolphin supports only one or two views, which
|
||||
* are handled internally as primary and secondary view.
|
||||
*/
|
||||
enum ViewIndex
|
||||
{
|
||||
PrimaryIdx = 0,
|
||||
SecondaryIdx = 1
|
||||
};
|
||||
DolphinView* m_view[SecondaryIdx + 1];
|
||||
|
||||
/// If set to true, the clipboard contains data which should be cutted after pasting.
|
||||
bool m_clipboardContainsCutData;
|
||||
|
||||
/**
|
||||
* Asynchronous operations like 'Move' and 'Copy' may only be added as undo
|
||||
* operation after they have been finished successfully. When an asynchronous
|
||||
* operation is started, it is added to a pending undo jobs list in the meantime.
|
||||
* As soon as the job has been finished, the operation is added to the undo mangager.
|
||||
* @see UndoManager
|
||||
* @see Dolphin::addPendingUndoJob
|
||||
* @see Dolphin::addUndoOperation
|
||||
*/
|
||||
struct UndoInfo
|
||||
{
|
||||
int id;
|
||||
DolphinCommand command;
|
||||
};
|
||||
QValueList<UndoInfo> m_pendingUndoJobs;
|
||||
|
||||
/** Contains meta information for creating files. */
|
||||
struct CreateFileEntry
|
||||
{
|
||||
QString name;
|
||||
QString filePath;
|
||||
QString templatePath;
|
||||
QString icon;
|
||||
QString comment;
|
||||
};
|
||||
|
||||
QPtrList<KAction> m_fileGroupActions;
|
||||
KSortableValueList<CreateFileEntry,QString> m_createFileTemplates;
|
||||
|
||||
// TODO: not used yet. See documentation of Dolphin::linkGroupActions()
|
||||
// and Dolphin::linkToDeviceActions() in for details.
|
||||
//QPtrList<KAction> m_linkGroupActions;
|
||||
//QPtrList<KAction> m_linkToDeviceActions;
|
||||
};
|
||||
|
||||
#endif // _DOLPHIN_H_
|
||||
|
@ -0,0 +1,16 @@
|
||||
Begin3
|
||||
Title: Dolphin -- Some description
|
||||
Version: 0.1
|
||||
Entered-date:
|
||||
Description:
|
||||
Keywords: KDE Qt
|
||||
Author: Peter Penz <peter.penz@gmx.at>
|
||||
Maintained-by: Peter Penz <peter.penz@gmx.at>
|
||||
Home-page:
|
||||
Alternate-site:
|
||||
Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
|
||||
xxxxxx dolphin-0.1.tar.gz
|
||||
xxx dolphin-0.1.lsm
|
||||
Platform: Linux. Needs KDE
|
||||
Copying-policy: GPL
|
||||
End
|
@ -0,0 +1,494 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and *
|
||||
* Cvetoslav Ludmiloff *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphincontextmenu.h"
|
||||
|
||||
#include <kactioncollection.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <kbookmark.h>
|
||||
#include <ktrader.h>
|
||||
#include <klocale.h>
|
||||
#include <krun.h>
|
||||
#include <qdir.h>
|
||||
#include <kglobal.h>
|
||||
#include <kstandarddirs.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kaction.h>
|
||||
#include <kpropertiesdialog.h>
|
||||
#include <kdesktopfile.h>
|
||||
#include <assert.h>
|
||||
#include <ksortablevaluelist.h>
|
||||
#include <kio/netaccess.h>
|
||||
#include <konq_operations.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "dolphinview.h"
|
||||
#include "editbookmarkdialog.h"
|
||||
#include "dolphinsettings.h"
|
||||
|
||||
|
||||
DolphinContextMenu::DolphinContextMenu(DolphinView* parent,
|
||||
KFileItem* fileInfo,
|
||||
const QPoint& pos) :
|
||||
m_dolphinView(parent),
|
||||
m_fileInfo(fileInfo),
|
||||
m_pos(pos)
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinContextMenu::open()
|
||||
{
|
||||
if (m_fileInfo == 0) {
|
||||
openViewportContextMenu();
|
||||
}
|
||||
else {
|
||||
openItemContextMenu();
|
||||
}
|
||||
}
|
||||
|
||||
DolphinContextMenu::~DolphinContextMenu()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinContextMenu::openViewportContextMenu()
|
||||
{
|
||||
// Parts of the following code have been taken
|
||||
// from the class KonqOperations located in
|
||||
// libqonq/konq_operations.h of Konqueror.
|
||||
// (Copyright (C) 2000 David Faure <faure@kde.org>)
|
||||
|
||||
assert(m_fileInfo == 0);
|
||||
const int propertiesID = 100;
|
||||
const int bookmarkID = 101;
|
||||
|
||||
KPopupMenu* popup = new KPopupMenu(m_dolphinView);
|
||||
Dolphin& dolphin = Dolphin::mainWin();
|
||||
|
||||
// setup 'Create New' menu
|
||||
KPopupMenu* createNewMenu = new KPopupMenu();
|
||||
|
||||
KAction* createFolderAction = dolphin.actionCollection()->action("create_folder");
|
||||
if (createFolderAction != 0) {
|
||||
createFolderAction->plug(createNewMenu);
|
||||
}
|
||||
|
||||
createNewMenu->insertSeparator();
|
||||
|
||||
KAction* action = 0;
|
||||
|
||||
QPtrListIterator<KAction> fileGrouptIt(dolphin.fileGroupActions());
|
||||
while ((action = fileGrouptIt.current()) != 0) {
|
||||
action->plug(createNewMenu);
|
||||
++fileGrouptIt;
|
||||
}
|
||||
|
||||
// TODO: not used yet. See documentation of Dolphin::linkGroupActions()
|
||||
// and Dolphin::linkToDeviceActions() in the header file for details.
|
||||
//
|
||||
//createNewMenu->insertSeparator();
|
||||
//
|
||||
//QPtrListIterator<KAction> linkGroupIt(dolphin.linkGroupActions());
|
||||
//while ((action = linkGroupIt.current()) != 0) {
|
||||
// action->plug(createNewMenu);
|
||||
// ++linkGroupIt;
|
||||
//}
|
||||
//
|
||||
//KPopupMenu* linkToDeviceMenu = new KPopupMenu();
|
||||
//QPtrListIterator<KAction> linkToDeviceIt(dolphin.linkToDeviceActions());
|
||||
//while ((action = linkToDeviceIt.current()) != 0) {
|
||||
// action->plug(linkToDeviceMenu);
|
||||
// ++linkToDeviceIt;
|
||||
//}
|
||||
//
|
||||
//createNewMenu->insertItem(i18n("Link to Device"), linkToDeviceMenu);
|
||||
|
||||
const KURL& url = dolphin.activeView()->url();
|
||||
if (url.protocol() == "trash")
|
||||
{
|
||||
popup->insertItem(i18n("Empty Deleted Items Folder"), emptyID);
|
||||
}
|
||||
else
|
||||
{
|
||||
popup->insertItem(SmallIcon("filenew"), i18n("Create New"), createNewMenu);
|
||||
}
|
||||
popup->insertSeparator();
|
||||
|
||||
KAction* pasteAction = dolphin.actionCollection()->action(KStdAction::stdName(KStdAction::Paste));
|
||||
pasteAction->plug(popup);
|
||||
|
||||
// setup 'View Mode' menu
|
||||
KPopupMenu* viewModeMenu = new KPopupMenu();
|
||||
|
||||
KAction* iconsMode = dolphin.actionCollection()->action("icons");
|
||||
iconsMode->plug(viewModeMenu);
|
||||
|
||||
KAction* detailsMode = dolphin.actionCollection()->action("details");
|
||||
detailsMode->plug(viewModeMenu);
|
||||
|
||||
KAction* previewsMode = dolphin.actionCollection()->action("previews");
|
||||
previewsMode->plug(viewModeMenu);
|
||||
|
||||
popup->insertItem(i18n("View Mode"), viewModeMenu);
|
||||
popup->insertSeparator();
|
||||
|
||||
popup->insertItem(i18n("Bookmark this folder"), bookmarkID);
|
||||
popup->insertSeparator();
|
||||
|
||||
popup->insertItem(i18n("Properties..."), propertiesID);
|
||||
|
||||
int id = popup->exec(m_pos);
|
||||
if (id == emptyID) {
|
||||
KonqOperations::emptyTrash();
|
||||
}
|
||||
else if (id == propertiesID) {
|
||||
new KPropertiesDialog(dolphin.activeView()->url());
|
||||
}
|
||||
else if (id == bookmarkID) {
|
||||
const KURL& url = dolphin.activeView()->url();
|
||||
KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add folder as bookmark"),
|
||||
url.filename(),
|
||||
url,
|
||||
"bookmark");
|
||||
if (!bookmark.isNull()) {
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
KBookmarkGroup root = manager->root();
|
||||
root.addBookmark(manager, bookmark);
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
}
|
||||
|
||||
popup->deleteLater();
|
||||
}
|
||||
|
||||
void DolphinContextMenu::openItemContextMenu()
|
||||
{
|
||||
// Parts of the following code have been taken
|
||||
// from the class KonqOperations located in
|
||||
// libqonq/konq_operations.h of Konqueror.
|
||||
// (Copyright (C) 2000 David Faure <faure@kde.org>)
|
||||
|
||||
assert(m_fileInfo != 0);
|
||||
|
||||
KPopupMenu* popup = new KPopupMenu(m_dolphinView);
|
||||
Dolphin& dolphin = Dolphin::mainWin();
|
||||
const KURL::List urls = m_dolphinView->selectedURLs();
|
||||
|
||||
const KURL& url = dolphin.activeView()->url();
|
||||
if (url.protocol() == "trash")
|
||||
{
|
||||
popup->insertItem(i18n("&Restore"), restoreID);
|
||||
}
|
||||
|
||||
// insert 'Cut', 'Copy' and 'Paste'
|
||||
const KStdAction::StdAction actionNames[] = { KStdAction::Cut, KStdAction::Copy, KStdAction::Paste };
|
||||
const int count = sizeof(actionNames) / sizeof(KStdAction::StdAction);
|
||||
for (int i = 0; i < count; ++i) {
|
||||
KAction* action = dolphin.actionCollection()->action(KStdAction::stdName(actionNames[i]));
|
||||
if (action != 0) {
|
||||
action->plug(popup);
|
||||
}
|
||||
}
|
||||
popup->insertSeparator();
|
||||
|
||||
// insert 'Rename'
|
||||
KAction* renameAction = dolphin.actionCollection()->action("rename");
|
||||
renameAction->plug(popup);
|
||||
|
||||
// insert 'Move to Trash' for local URLs, otherwise insert 'Delete'
|
||||
if (url.isLocalFile()) {
|
||||
KAction* moveToTrashAction = dolphin.actionCollection()->action("move_to_trash");
|
||||
moveToTrashAction->plug(popup);
|
||||
}
|
||||
else {
|
||||
KAction* deleteAction = dolphin.actionCollection()->action("delete");
|
||||
deleteAction->plug(popup);
|
||||
}
|
||||
|
||||
// insert 'Bookmark this folder...' entry
|
||||
// urls is a list of selected items, so insert boolmark menu if
|
||||
// urls contains only one item, i.e. no multiple selection made
|
||||
if (m_fileInfo->isDir() && (urls.count() == 1)) {
|
||||
popup->insertItem(i18n("Bookmark this folder"), bookmarkID);
|
||||
}
|
||||
|
||||
popup->insertSeparator();
|
||||
|
||||
// Insert 'Open With...' sub menu
|
||||
QValueVector<KService::Ptr> openWithVector;
|
||||
const int openWithID = insertOpenWithItems(popup, openWithVector);
|
||||
|
||||
// Insert 'Actions' sub menu
|
||||
QValueVector<KDEDesktopMimeType::Service> actionsVector;
|
||||
insertActionItems(popup, actionsVector);
|
||||
|
||||
// insert 'Properties...' entry
|
||||
popup->insertSeparator();
|
||||
KAction* propertiesAction = dolphin.actionCollection()->action("properties");
|
||||
propertiesAction->plug(popup);
|
||||
|
||||
int id = popup->exec(m_pos);
|
||||
|
||||
if (id == restoreID ) {
|
||||
KonqOperations::restoreTrashedItems(urls);
|
||||
}
|
||||
else if (id == bookmarkID) {
|
||||
const KURL selectedURL(m_fileInfo->url());
|
||||
KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add folder as bookmark"),
|
||||
selectedURL.filename(),
|
||||
selectedURL,
|
||||
"bookmark");
|
||||
if (!bookmark.isNull()) {
|
||||
KBookmarkManager* manager = DolphinSettings::instance().bookmarkManager();
|
||||
KBookmarkGroup root = manager->root();
|
||||
root.addBookmark(manager, bookmark);
|
||||
manager->emitChanged(root);
|
||||
}
|
||||
}
|
||||
else if (id >= actionsIDStart) {
|
||||
// one of the 'Actions' items has been selected
|
||||
KDEDesktopMimeType::executeService(urls, actionsVector[id - actionsIDStart]);
|
||||
}
|
||||
else if (id >= openWithIDStart) {
|
||||
// one of the 'Open With' items has been selected
|
||||
if (id == openWithID) {
|
||||
// the item 'Other...' has been selected
|
||||
KRun::displayOpenWithDialog(urls);
|
||||
}
|
||||
else {
|
||||
KService::Ptr servicePtr = openWithVector[id - openWithIDStart];
|
||||
KRun::run(*servicePtr, urls);
|
||||
}
|
||||
}
|
||||
|
||||
openWithVector.clear();
|
||||
actionsVector.clear();
|
||||
popup->deleteLater();
|
||||
}
|
||||
|
||||
int DolphinContextMenu::insertOpenWithItems(KPopupMenu* popup,
|
||||
QValueVector<KService::Ptr>& openWithVector)
|
||||
{
|
||||
// Prepare 'Open With' sub menu. Usually a sub menu is created, where all applications
|
||||
// are listed which are registered to open the item. As last entry "Other..." will be
|
||||
// attached which allows to select a custom application. If no applications are registered
|
||||
// no sub menu is created at all, only "Open With..." will be offered.
|
||||
const KFileItemList* list = m_dolphinView->selectedItems();
|
||||
assert(list != 0);
|
||||
|
||||
bool insertOpenWithItems = true;
|
||||
const QString contextMimeType(m_fileInfo->mimetype());
|
||||
KFileItemListIterator mimeIt(*list);
|
||||
KFileItem* item = 0;
|
||||
while (insertOpenWithItems && ((item = mimeIt.current()) != 0)) {
|
||||
insertOpenWithItems = (contextMimeType == item->mimetype());
|
||||
++mimeIt;
|
||||
}
|
||||
|
||||
int openWithID = -1;
|
||||
|
||||
if (insertOpenWithItems) {
|
||||
// fill the 'Open with' sub menu with application types
|
||||
const KMimeType::Ptr mimePtr = KMimeType::findByURL(m_fileInfo->url());
|
||||
KTrader::OfferList offers = KTrader::self()->query(mimePtr->name(),
|
||||
"Type == 'Application'");
|
||||
int index = openWithIDStart;
|
||||
if (offers.count() > 0) {
|
||||
KTrader::OfferList::Iterator it;
|
||||
KPopupMenu* openWithMenu = new KPopupMenu();
|
||||
for(it = offers.begin(); it != offers.end(); ++it) {
|
||||
// The offer list from the KTrader returns duplicate
|
||||
// application entries. Although this seems to be a configuration
|
||||
// problem outside the scope of Dolphin, duplicated entries just
|
||||
// will be skipped here.
|
||||
const QString appName((*it)->name());
|
||||
if (!containsEntry(openWithMenu, appName)) {
|
||||
openWithMenu->insertItem((*it)->pixmap(KIcon::Small),
|
||||
appName, index);
|
||||
openWithVector.append(*it);
|
||||
++index;
|
||||
}
|
||||
}
|
||||
|
||||
openWithMenu->insertSeparator();
|
||||
openWithMenu->insertItem(i18n("&Other..."), index);
|
||||
popup->insertItem(i18n("Open With"), openWithMenu);
|
||||
}
|
||||
else {
|
||||
// No applications are registered, hence just offer
|
||||
// a "Open With..." item instead of a sub menu containing
|
||||
// only one entry.
|
||||
popup->insertItem(i18n("Open With..."), openWithIDStart);
|
||||
}
|
||||
openWithID = index;
|
||||
}
|
||||
else {
|
||||
// At least one of the selected items has a different MIME type. In this case
|
||||
// just show a disabled "Open With..." entry.
|
||||
popup->insertItem(i18n("Open With..."), openWithIDStart);
|
||||
popup->setItemEnabled(openWithIDStart, false);
|
||||
}
|
||||
|
||||
popup->setItemEnabled(openWithID, insertOpenWithItems);
|
||||
|
||||
return openWithID;
|
||||
}
|
||||
|
||||
void DolphinContextMenu::insertActionItems(KPopupMenu* popup,
|
||||
QValueVector<KDEDesktopMimeType::Service>& actionsVector)
|
||||
{
|
||||
KPopupMenu* actionsMenu = new KPopupMenu();
|
||||
|
||||
int actionsIndex = 0;
|
||||
|
||||
QStringList dirs = KGlobal::dirs()->findDirs("data", "d3lphin/servicemenus/");
|
||||
|
||||
KPopupMenu* menu = 0;
|
||||
for (QStringList::ConstIterator dirIt = dirs.begin(); dirIt != dirs.end(); ++dirIt) {
|
||||
QDir dir(*dirIt);
|
||||
QStringList entries = dir.entryList("*.desktop", QDir::Files);
|
||||
|
||||
for (QStringList::ConstIterator entryIt = entries.begin(); entryIt != entries.end(); ++entryIt) {
|
||||
KSimpleConfig cfg(*dirIt + *entryIt, true);
|
||||
cfg.setDesktopGroup();
|
||||
if ((cfg.hasKey("Actions") || cfg.hasKey("X-KDE-GetActionMenu")) && cfg.hasKey("ServiceTypes")) {
|
||||
const QStringList types = cfg.readListEntry("ServiceTypes");
|
||||
for (QStringList::ConstIterator it = types.begin(); it != types.end(); ++it) {
|
||||
// check whether the mime type is equal or whether the
|
||||
// mimegroup (e. g. image/*) is supported
|
||||
|
||||
bool insert = false;
|
||||
if ((*it) == "all/allfiles") {
|
||||
// The service type is valid for all files, but not for directories.
|
||||
// Check whether the selected items only consist of files...
|
||||
const KFileItemList* list = m_dolphinView->selectedItems();
|
||||
assert(list != 0);
|
||||
|
||||
KFileItemListIterator mimeIt(*list);
|
||||
KFileItem* item = 0;
|
||||
insert = true;
|
||||
while (insert && ((item = mimeIt.current()) != 0)) {
|
||||
insert = !item->isDir();
|
||||
++mimeIt;
|
||||
}
|
||||
}
|
||||
|
||||
if (!insert) {
|
||||
// Check whether the MIME types of all selected files match
|
||||
// to the mimetype of the service action. As soon as one MIME
|
||||
// type does not match, no service menu is shown at all.
|
||||
const KFileItemList* list = m_dolphinView->selectedItems();
|
||||
assert(list != 0);
|
||||
|
||||
KFileItemListIterator mimeIt(*list);
|
||||
KFileItem* item = 0;
|
||||
insert = true;
|
||||
while (insert && ((item = mimeIt.current()) != 0)) {
|
||||
const QString mimeType((*mimeIt)->mimetype());
|
||||
const QString mimeGroup(mimeType.left(mimeType.find('/')));
|
||||
|
||||
insert = (*it == mimeType) ||
|
||||
((*it).right(1) == "*") &&
|
||||
((*it).left((*it).find('/')) == mimeGroup);
|
||||
++mimeIt;
|
||||
}
|
||||
}
|
||||
|
||||
if (insert) {
|
||||
menu = actionsMenu;
|
||||
|
||||
const QString submenuName = cfg.readEntry( "X-KDE-Submenu" );
|
||||
if (!submenuName.isEmpty()) {
|
||||
menu = new KPopupMenu();
|
||||
actionsMenu->insertItem(submenuName, menu, submenuID);
|
||||
}
|
||||
|
||||
QValueList<KDEDesktopMimeType::Service> userServices =
|
||||
KDEDesktopMimeType::userDefinedServices(*dirIt + *entryIt, true);
|
||||
|
||||
QValueList<KDEDesktopMimeType::Service>::Iterator serviceIt;
|
||||
for (serviceIt = userServices.begin(); serviceIt != userServices.end(); ++serviceIt) {
|
||||
KDEDesktopMimeType::Service service = (*serviceIt);
|
||||
if (!service.m_strIcon.isEmpty()) {
|
||||
menu->insertItem(SmallIcon(service.m_strIcon),
|
||||
service.m_strName,
|
||||
actionsIDStart + actionsIndex);
|
||||
}
|
||||
else {
|
||||
menu->insertItem(service.m_strName,
|
||||
actionsIDStart + actionsIndex);
|
||||
}
|
||||
actionsVector.append(service);
|
||||
++actionsIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const int itemsCount = actionsMenu->count();
|
||||
if (itemsCount == 0) {
|
||||
// no actions are available at all, hence show the "Actions"
|
||||
// submenu disabled
|
||||
actionsMenu->setEnabled(false);
|
||||
}
|
||||
|
||||
if (itemsCount == 1) {
|
||||
// Exactly one item is available. Instead of showing a sub menu with
|
||||
// only one item, show the item directly in the root menu.
|
||||
if (menu == actionsMenu) {
|
||||
// The item is an action, hence show the action in the root menu.
|
||||
const int id = actionsMenu->idAt(0);
|
||||
const QString text(actionsMenu->text(id));
|
||||
const QIconSet* iconSet = actionsMenu->iconSet(id);
|
||||
if (iconSet == 0) {
|
||||
popup->insertItem(text, id);
|
||||
}
|
||||
else {
|
||||
popup->insertItem(*iconSet, text, id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// The item is a sub menu, hence show the sub menu in the root menu.
|
||||
popup->insertItem(actionsMenu->text(submenuID), menu);
|
||||
}
|
||||
actionsMenu->deleteLater();
|
||||
actionsMenu = 0;
|
||||
}
|
||||
else {
|
||||
popup->insertItem(i18n("Actions"), actionsMenu);
|
||||
}
|
||||
}
|
||||
|
||||
bool DolphinContextMenu::containsEntry(const KPopupMenu* menu,
|
||||
const QString& entryName) const
|
||||
{
|
||||
assert(menu != 0);
|
||||
|
||||
const uint count = menu->count();
|
||||
for (uint i = 0; i < count; ++i) {
|
||||
const int id = menu->idAt(i);
|
||||
if (menu->text(id) == entryName) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
@ -0,0 +1,130 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINCONTEXTMENU_H
|
||||
#define DOLPHINCONTEXTMENU_H
|
||||
|
||||
#include <kpopupmenu.h>
|
||||
#include <qpoint.h>
|
||||
#include <qstring.h>
|
||||
#include <qvaluelist.h>
|
||||
#include <kmountpoint.h>
|
||||
#include <qvaluevector.h>
|
||||
#include <kservice.h>
|
||||
#include <kpropertiesdialog.h>
|
||||
|
||||
class KPopupMenu;
|
||||
class KFileItem;
|
||||
class QPoint;
|
||||
class QWidget;
|
||||
class DolphinView;
|
||||
|
||||
/**
|
||||
* @brief Represents the context menu which appears when doing a right
|
||||
* click on an item or the viewport of the file manager.
|
||||
*
|
||||
* Beside static menu entries (e. g. 'Paste' or 'Properties') two
|
||||
* dynamic sub menus are shown when opening a context menu above
|
||||
* an item:
|
||||
* - 'Open With': Contains all applications which are registered to
|
||||
* open items of the given MIME type.
|
||||
* - 'Actions': Contains all actions which can be applied to the
|
||||
* given item.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DolphinContextMenu
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @parent Pointer to the dolphin view the context menu
|
||||
* belongs to.
|
||||
* @fileInfo Pointer to the file item the context menu
|
||||
* is applied. If 0 is passed, the context menu
|
||||
* is above the viewport.
|
||||
* @pos Position of the upper left edge of the context menu.
|
||||
*/
|
||||
DolphinContextMenu(DolphinView* parent,
|
||||
KFileItem* fileInfo,
|
||||
const QPoint& pos);
|
||||
|
||||
virtual ~DolphinContextMenu();
|
||||
|
||||
/** Opens the context menu modal. */
|
||||
void open();
|
||||
|
||||
private:
|
||||
void openViewportContextMenu();
|
||||
void openItemContextMenu();
|
||||
|
||||
/**
|
||||
* Inserts the 'Open With...' submenu to \a popup.
|
||||
* @param popup Menu where the 'Open With...' sub menu should
|
||||
* be added.
|
||||
* @param openWithVector Output parameter which contains all 'Open with...'
|
||||
* services.
|
||||
* @return Identifier of the first 'Open With...' entry.
|
||||
* All succeeding identifiers have an increased value of 1
|
||||
* to the predecessor.
|
||||
*/
|
||||
int insertOpenWithItems(KPopupMenu* popup,
|
||||
QValueVector<KService::Ptr>& openWithVector);
|
||||
|
||||
/**
|
||||
* Inserts the 'Actions...' submenu to \a popup.
|
||||
* @param popup Menu where the 'Actions...' sub menu should
|
||||
* be added.
|
||||
* @param openWithVector Output parameter which contains all 'Actions...'
|
||||
* services.
|
||||
*/
|
||||
void insertActionItems(KPopupMenu* popup,
|
||||
QValueVector<KDEDesktopMimeType::Service>& actionsVector);
|
||||
|
||||
/**
|
||||
* Returns true, if 'menu' contains already
|
||||
* an entry with the name 'entryName'.
|
||||
*/
|
||||
bool containsEntry(const KPopupMenu* menu,
|
||||
const QString& entryName) const;
|
||||
|
||||
enum {
|
||||
restoreID = 80,
|
||||
emptyID = 85,
|
||||
submenuID = 90,
|
||||
bookmarkID = 91,
|
||||
openWithIDStart = 100,
|
||||
actionsIDStart = 1000,
|
||||
};
|
||||
|
||||
DolphinView* m_dolphinView;
|
||||
KFileItem* m_fileInfo;
|
||||
QPoint m_pos;
|
||||
|
||||
struct Entry {
|
||||
int type;
|
||||
QString name;
|
||||
QString filePath; // empty for separator
|
||||
QString templatePath; // same as filePath for template
|
||||
QString icon;
|
||||
QString comment;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,789 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphindetailsview.h"
|
||||
|
||||
#include <kurldrag.h>
|
||||
#include <qpainter.h>
|
||||
#include <qobjectlist.h>
|
||||
#include <qheader.h>
|
||||
#include <qclipboard.h>
|
||||
#include <qpainter.h>
|
||||
#include <klocale.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <qscrollbar.h>
|
||||
#include <qcursor.h>
|
||||
#include <qstyle.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "dolphinview.h"
|
||||
#include "viewproperties.h"
|
||||
#include "dolphin.h"
|
||||
#include "kiconeffect.h"
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphinstatusbar.h"
|
||||
#include "dolphindetailsviewsettings.h"
|
||||
|
||||
DolphinDetailsView::DolphinDetailsView(DolphinView* parent) :
|
||||
KFileDetailView(parent, 0),
|
||||
m_dolphinView(parent),
|
||||
m_resizeTimer(0),
|
||||
m_scrollTimer(0),
|
||||
m_rubber(0)
|
||||
{
|
||||
m_resizeTimer = new QTimer(this);
|
||||
connect(m_resizeTimer, SIGNAL(timeout()),
|
||||
this, SLOT(updateColumnsWidth()));
|
||||
|
||||
setAcceptDrops(true);
|
||||
setSelectionMode(KFile::Extended);
|
||||
setHScrollBarMode(QScrollView::AlwaysOff);
|
||||
|
||||
setColumnAlignment(SizeColumn, Qt::AlignRight);
|
||||
for (int i = DateColumn; i <= GroupColumn; ++i) {
|
||||
setColumnAlignment(i, Qt::AlignHCenter);
|
||||
}
|
||||
|
||||
Dolphin& dolphin = Dolphin::mainWin();
|
||||
|
||||
connect(this, SIGNAL(onItem(QListViewItem*)),
|
||||
this, SLOT(slotOnItem(QListViewItem*)));
|
||||
connect(this, SIGNAL(onViewport()),
|
||||
this, SLOT(slotOnViewport()));
|
||||
connect(this, SIGNAL(contextMenuRequested(QListViewItem*, const QPoint&, int)),
|
||||
this, SLOT(slotContextMenuRequested(QListViewItem*, const QPoint&, int)));
|
||||
connect(this, SIGNAL(selectionChanged()),
|
||||
&dolphin, SLOT(slotSelectionChanged()));
|
||||
connect(&dolphin, SIGNAL(activeViewChanged()),
|
||||
this, SLOT(slotActivationUpdate()));
|
||||
connect(this, SIGNAL(itemRenamed(QListViewItem*, const QString&, int)),
|
||||
this, SLOT(slotItemRenamed(QListViewItem*, const QString&, int)));
|
||||
connect(this, SIGNAL(dropped(QDropEvent*, const KURL::List&, const KURL&)),
|
||||
parent, SLOT(slotURLListDropped(QDropEvent*, const KURL::List&, const KURL&)));
|
||||
|
||||
QClipboard* clipboard = QApplication::clipboard();
|
||||
connect(clipboard, SIGNAL(dataChanged()),
|
||||
this, SLOT(slotUpdateDisabledItems()));
|
||||
|
||||
QHeader* viewHeader = header();
|
||||
viewHeader->setResizeEnabled(false);
|
||||
viewHeader->setMovingEnabled(false);
|
||||
connect(viewHeader, SIGNAL(clicked(int)),
|
||||
this, SLOT(slotHeaderClicked(int)));
|
||||
|
||||
setMouseTracking(true);
|
||||
setDefaultRenameAction(QListView::Accept);
|
||||
|
||||
refreshSettings();
|
||||
}
|
||||
|
||||
DolphinDetailsView::~DolphinDetailsView()
|
||||
{
|
||||
delete m_rubber;
|
||||
m_rubber = 0;
|
||||
}
|
||||
|
||||
void DolphinDetailsView::beginItemUpdates()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinDetailsView::endItemUpdates()
|
||||
{
|
||||
updateDisabledItems();
|
||||
|
||||
// Restore the current item. Use the information stored in the history if
|
||||
// available. Otherwise use the first item as current item.
|
||||
|
||||
const KFileListViewItem* item = static_cast<const KFileListViewItem*>(firstChild());
|
||||
if (item != 0) {
|
||||
setCurrentItem(item->fileInfo());
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
const QValueList<URLNavigator::HistoryElem> history = m_dolphinView->urlHistory(index);
|
||||
if (!history.isEmpty()) {
|
||||
KFileView* fileView = static_cast<KFileView*>(this);
|
||||
fileView->setCurrentItem(history[index].currentFileName());
|
||||
setContentsPos(history[index].contentsX(), history[index].contentsY());
|
||||
}
|
||||
|
||||
updateColumnsWidth();
|
||||
}
|
||||
|
||||
void DolphinDetailsView::insertItem(KFileItem* fileItem)
|
||||
{
|
||||
KFileView::insertItem(fileItem);
|
||||
|
||||
DolphinListViewItem* item = new DolphinListViewItem(static_cast<QListView*>(this), fileItem);
|
||||
|
||||
QDir::SortSpec spec = KFileView::sorting();
|
||||
if (spec & QDir::Time) {
|
||||
item->setKey(sortingKey(fileItem->time(KIO::UDS_MODIFICATION_TIME),
|
||||
fileItem->isDir(),
|
||||
spec));
|
||||
}
|
||||
else if (spec & QDir::Size) {
|
||||
item->setKey(sortingKey(fileItem->size(), fileItem->isDir(), spec));
|
||||
}
|
||||
else {
|
||||
item->setKey(sortingKey(fileItem->text(), fileItem->isDir(), spec));
|
||||
}
|
||||
|
||||
fileItem->setExtraData(this, item);
|
||||
}
|
||||
|
||||
bool DolphinDetailsView::isOnFilename(const QListViewItem* item, const QPoint& pos) const
|
||||
{
|
||||
const QPoint absPos(mapToGlobal(QPoint(0, 0)));
|
||||
return (pos.x() - absPos.x()) <= filenameWidth(item);
|
||||
}
|
||||
|
||||
void DolphinDetailsView::refreshSettings()
|
||||
{
|
||||
const DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
assert(settings != 0);
|
||||
|
||||
for (int i = DolphinDetailsView::GroupColumn; i >= DolphinDetailsView::NameColumn; --i) {
|
||||
if (!settings->isColumnEnabled(i)) {
|
||||
removeColumn(i);
|
||||
}
|
||||
}
|
||||
|
||||
QFont adjustedFont(font());
|
||||
adjustedFont.setFamily(settings->fontFamily());
|
||||
adjustedFont.setPointSize(settings->fontSize());
|
||||
setFont(adjustedFont);
|
||||
|
||||
updateView(true);
|
||||
}
|
||||
|
||||
void DolphinDetailsView::zoomIn()
|
||||
{
|
||||
if (isZoomInPossible()) {
|
||||
DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
switch (settings->iconSize()) {
|
||||
case KIcon::SizeSmall: settings->setIconSize(KIcon::SizeMedium); break;
|
||||
case KIcon::SizeMedium: settings->setIconSize(KIcon::SizeLarge); break;
|
||||
default: assert(false); break;
|
||||
}
|
||||
ItemEffectsManager::zoomIn();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::zoomOut()
|
||||
{
|
||||
if (isZoomOutPossible()) {
|
||||
DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
switch (settings->iconSize()) {
|
||||
case KIcon::SizeLarge: settings->setIconSize(KIcon::SizeMedium); break;
|
||||
case KIcon::SizeMedium: settings->setIconSize(KIcon::SizeSmall); break;
|
||||
default: assert(false); break;
|
||||
}
|
||||
ItemEffectsManager::zoomOut();
|
||||
}
|
||||
}
|
||||
|
||||
bool DolphinDetailsView::isZoomInPossible() const
|
||||
{
|
||||
DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
return settings->iconSize() < KIcon::SizeLarge;
|
||||
}
|
||||
|
||||
bool DolphinDetailsView::isZoomOutPossible() const
|
||||
{
|
||||
DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
return settings->iconSize() > KIcon::SizeSmall;
|
||||
}
|
||||
|
||||
void DolphinDetailsView::resizeContents(int width, int height)
|
||||
{
|
||||
KFileDetailView::resizeContents(width, height);
|
||||
|
||||
// When loading several 1000 items a punch of resize events
|
||||
// drops in. As updating the column width is a quite expensive
|
||||
// operation, this operation will be postponed until there is
|
||||
// no resize event for at least 50 milliseconds.
|
||||
m_resizeTimer->stop();
|
||||
m_resizeTimer->start(50, true);
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotOnItem(QListViewItem* item)
|
||||
{
|
||||
if (isOnFilename(item, QCursor::pos())) {
|
||||
activateItem(item);
|
||||
KFileItem* fileItem = static_cast<KFileListViewItem*>(item)->fileInfo();
|
||||
m_dolphinView->requestItemInfo(fileItem->url());
|
||||
}
|
||||
else {
|
||||
resetActivatedItem();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotOnViewport()
|
||||
{
|
||||
resetActivatedItem();
|
||||
m_dolphinView->requestItemInfo(KURL());
|
||||
}
|
||||
|
||||
void DolphinDetailsView::setContextPixmap(void* context,
|
||||
const QPixmap& pixmap)
|
||||
{
|
||||
reinterpret_cast<KFileListViewItem*>(context)->setPixmap(0, pixmap);
|
||||
}
|
||||
|
||||
const QPixmap* DolphinDetailsView::contextPixmap(void* context)
|
||||
{
|
||||
return reinterpret_cast<KFileListViewItem*>(context)->pixmap(0);
|
||||
}
|
||||
|
||||
void* DolphinDetailsView::firstContext()
|
||||
{
|
||||
return reinterpret_cast<void*>(firstChild());
|
||||
}
|
||||
|
||||
void* DolphinDetailsView::nextContext(void* context)
|
||||
{
|
||||
KFileListViewItem* listViewItem = reinterpret_cast<KFileListViewItem*>(context);
|
||||
return reinterpret_cast<void*>(listViewItem->nextSibling());
|
||||
}
|
||||
|
||||
KFileItem* DolphinDetailsView::contextFileInfo(void* context)
|
||||
{
|
||||
return reinterpret_cast<KFileListViewItem*>(context)->fileInfo();
|
||||
}
|
||||
|
||||
|
||||
void DolphinDetailsView::contentsDragMoveEvent(QDragMoveEvent* event)
|
||||
{
|
||||
KFileDetailView::contentsDragMoveEvent(event);
|
||||
|
||||
// If a dragging is done above a directory, show the icon as 'active' for
|
||||
// a visual feedback
|
||||
KFileListViewItem* item = static_cast<KFileListViewItem*>(itemAt(event->pos()));
|
||||
|
||||
bool showActive = false;
|
||||
if (item != 0) {
|
||||
const KFileItem* fileInfo = item->fileInfo();
|
||||
showActive = (fileInfo != 0) && fileInfo->isDir();
|
||||
}
|
||||
|
||||
if (showActive) {
|
||||
slotOnItem(item);
|
||||
}
|
||||
else {
|
||||
slotOnViewport();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::resizeEvent(QResizeEvent* event)
|
||||
{
|
||||
KFileDetailView::resizeEvent(event);
|
||||
|
||||
// When loading several 1000 items a punch of resize events
|
||||
// drops in. As updating the column width is a quite expensive
|
||||
// operation, this operation will be postponed until there is
|
||||
// no resize event for at least 50 milliseconds.
|
||||
m_resizeTimer->stop();
|
||||
m_resizeTimer->start(50, true);
|
||||
}
|
||||
|
||||
bool DolphinDetailsView::acceptDrag(QDropEvent* event) const
|
||||
{
|
||||
bool accept = KURLDrag::canDecode(event) &&
|
||||
(event->action() == QDropEvent::Copy ||
|
||||
event->action() == QDropEvent::Move ||
|
||||
event->action() == QDropEvent::Link);
|
||||
if (accept) {
|
||||
if (static_cast<const QWidget*>(event->source()) == this) {
|
||||
KFileListViewItem* item = static_cast<KFileListViewItem*>(itemAt(event->pos()));
|
||||
accept = (item != 0);
|
||||
if (accept) {
|
||||
KFileItem* fileItem = item->fileInfo();
|
||||
accept = fileItem->isDir();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return accept;
|
||||
}
|
||||
|
||||
void DolphinDetailsView::contentsDropEvent(QDropEvent* event)
|
||||
{
|
||||
// KFileDetailView::contentsDropEvent does not care whether the mouse
|
||||
// cursor is above a filename or not, the destination URL is always
|
||||
// the URL of the item. This is fixed here in a way that the destination
|
||||
// URL is only the URL of the item if the cursor is above the filename.
|
||||
const QPoint pos(QCursor::pos());
|
||||
const QPoint viewportPos(viewport()->mapToGlobal(QPoint(0, 0)));
|
||||
QListViewItem* item = itemAt(QPoint(pos.x() - viewportPos.x(), pos.y() - viewportPos.y()));
|
||||
if ((item == 0) || ((item != 0) && isOnFilename(item, pos))) {
|
||||
// dropping is done on the viewport or directly above a filename
|
||||
KFileDetailView::contentsDropEvent(event);
|
||||
return;
|
||||
}
|
||||
|
||||
// Dropping is done above an item, but the mouse cursor is not above the file name.
|
||||
// In this case the signals of the base implementation will be blocked and send
|
||||
// in a corrected manner afterwards.
|
||||
assert(item != 0);
|
||||
const bool block = signalsBlocked();
|
||||
blockSignals(true);
|
||||
KFileDetailView::contentsDropEvent(event);
|
||||
blockSignals(block);
|
||||
|
||||
if (!acceptDrag(event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
emit dropped(event, 0);
|
||||
KURL::List urls;
|
||||
if (KURLDrag::decode(event, urls) && !urls.isEmpty()) {
|
||||
emit dropped(event, urls, KURL());
|
||||
sig->dropURLs(0, event, urls);
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::contentsMousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
if (m_rubber != 0) {
|
||||
drawRubber();
|
||||
delete m_rubber;
|
||||
m_rubber = 0;
|
||||
}
|
||||
|
||||
// Swallow the base implementation of the mouse press event
|
||||
// if the mouse cursor is not above the filename. This prevents
|
||||
// that the item gets selected and simulates an equal usability
|
||||
// like in the icon view.
|
||||
const QPoint pos(QCursor::pos());
|
||||
const QPoint viewportPos(viewport()->mapToGlobal(QPoint(0, 0)));
|
||||
QListViewItem* item = itemAt(QPoint(pos.x() - viewportPos.x(), pos.y() - viewportPos.y()));
|
||||
if ((item != 0) && isOnFilename(item, pos)) {
|
||||
KFileDetailView::contentsMousePressEvent(event);
|
||||
}
|
||||
else if (event->button() == Qt::LeftButton) {
|
||||
const ButtonState keyboardState = KApplication::keyboardMouseState();
|
||||
const bool isSelectionActive = (keyboardState & ShiftButton) ||
|
||||
(keyboardState & ControlButton);
|
||||
if (!isSelectionActive) {
|
||||
clearSelection();
|
||||
}
|
||||
|
||||
assert(m_rubber == 0);
|
||||
m_rubber = new QRect(event->x(), event->y(), 0, 0);
|
||||
}
|
||||
|
||||
resetActivatedItem();
|
||||
emit signalRequestActivation();
|
||||
|
||||
m_dolphinView->statusBar()->clear();
|
||||
}
|
||||
|
||||
void DolphinDetailsView::contentsMouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
if (m_rubber != 0) {
|
||||
slotAutoScroll();
|
||||
return;
|
||||
}
|
||||
|
||||
KFileDetailView::contentsMouseMoveEvent(event);
|
||||
|
||||
const QPoint& pos = event->globalPos();
|
||||
const QPoint viewportPos = viewport()->mapToGlobal(QPoint(0, 0));
|
||||
QListViewItem* item = itemAt(QPoint(pos.x() - viewportPos.x(), pos.y() - viewportPos.y()));
|
||||
if ((item != 0) && isOnFilename(item, pos)) {
|
||||
activateItem(item);
|
||||
}
|
||||
else {
|
||||
resetActivatedItem();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::contentsMouseReleaseEvent(QMouseEvent* event)
|
||||
{
|
||||
if (m_rubber != 0) {
|
||||
drawRubber();
|
||||
delete m_rubber;
|
||||
m_rubber = 0;
|
||||
}
|
||||
|
||||
if (m_scrollTimer != 0) {
|
||||
disconnect(m_scrollTimer, SIGNAL(timeout()),
|
||||
this, SLOT(slotAutoScroll()));
|
||||
m_scrollTimer->stop();
|
||||
delete m_scrollTimer;
|
||||
m_scrollTimer = 0;
|
||||
}
|
||||
|
||||
KFileDetailView::contentsMouseReleaseEvent(event);
|
||||
}
|
||||
|
||||
void DolphinDetailsView::paintEmptyArea(QPainter* painter, const QRect& rect)
|
||||
{
|
||||
if (m_dolphinView->isActive()) {
|
||||
KFileDetailView::paintEmptyArea(painter, rect);
|
||||
}
|
||||
else {
|
||||
const QBrush brush(colorGroup().background());
|
||||
painter->fillRect(rect, brush);
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::drawRubber()
|
||||
{
|
||||
// Parts of the following code have been taken
|
||||
// from the class KonqBaseListViewWidget located in
|
||||
// konqueror/listview/konq_listviewwidget.h of Konqueror.
|
||||
// (Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
|
||||
// 2001, 2002, 2004 Michael Brade <brade@kde.org>)
|
||||
if (m_rubber == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
QPainter p;
|
||||
p.begin(viewport());
|
||||
p.setRasterOp(NotROP);
|
||||
p.setPen(QPen(color0, 1));
|
||||
p.setBrush(NoBrush);
|
||||
|
||||
QPoint point(m_rubber->x(), m_rubber->y());
|
||||
point = contentsToViewport(point);
|
||||
style().drawPrimitive(QStyle::PE_FocusRect, &p,
|
||||
QRect(point.x(), point.y(), m_rubber->width(), m_rubber->height()),
|
||||
colorGroup(), QStyle::Style_Default, colorGroup().base());
|
||||
p.end();
|
||||
}
|
||||
|
||||
void DolphinDetailsView::viewportPaintEvent(QPaintEvent* paintEvent)
|
||||
{
|
||||
drawRubber();
|
||||
KFileDetailView::viewportPaintEvent(paintEvent);
|
||||
drawRubber();
|
||||
}
|
||||
|
||||
void DolphinDetailsView::leaveEvent(QEvent* event)
|
||||
{
|
||||
KFileDetailView::leaveEvent(event);
|
||||
slotOnViewport();
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotActivationUpdate()
|
||||
{
|
||||
update();
|
||||
|
||||
// TODO: there must be a simpler way to say
|
||||
// "update all children"
|
||||
const QObjectList* list = children();
|
||||
if (list == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
QObjectListIterator it(*list);
|
||||
QObject* object = 0;
|
||||
while ((object = it.current()) != 0) {
|
||||
if (object->inherits("QWidget")) {
|
||||
QWidget* widget = static_cast<QWidget*>(object);
|
||||
widget->update();
|
||||
}
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotContextMenuRequested(QListViewItem* item,
|
||||
const QPoint& pos,
|
||||
int /* col */)
|
||||
{
|
||||
KFileItem* fileInfo = 0;
|
||||
if ((item != 0) && isOnFilename(item, pos)) {
|
||||
fileInfo = static_cast<KFileListViewItem*>(item)->fileInfo();
|
||||
}
|
||||
m_dolphinView->openContextMenu(fileInfo, pos);
|
||||
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotUpdateDisabledItems()
|
||||
{
|
||||
updateDisabledItems();
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotAutoScroll()
|
||||
{
|
||||
// Parts of the following code have been taken
|
||||
// from the class KonqBaseListViewWidget located in
|
||||
// konqueror/listview/konq_listviewwidget.h of Konqueror.
|
||||
// (Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
|
||||
// 2001, 2002, 2004 Michael Brade <brade@kde.org>)
|
||||
|
||||
const QPoint pos(viewport()->mapFromGlobal(QCursor::pos()));
|
||||
const QPoint vc(viewportToContents(pos));
|
||||
|
||||
if (vc == m_rubber->bottomRight()) {
|
||||
return;
|
||||
}
|
||||
|
||||
drawRubber();
|
||||
|
||||
m_rubber->setBottomRight(vc);
|
||||
|
||||
QListViewItem* item = itemAt(QPoint(0,0));
|
||||
|
||||
const bool block = signalsBlocked();
|
||||
blockSignals(true);
|
||||
|
||||
const QRect rubber(m_rubber->normalize());
|
||||
const int bottom = contentsY() + visibleHeight() - 1;
|
||||
|
||||
// select all items which intersect with the rubber, deselect all others
|
||||
bool bottomReached = false;
|
||||
while ((item != 0) && !bottomReached) {
|
||||
QRect rect(itemRect(item));
|
||||
rect.setWidth(filenameWidth(item));
|
||||
rect = QRect(viewportToContents(rect.topLeft()),
|
||||
viewportToContents(rect.bottomRight()));
|
||||
if (rect.isValid() && (rect.top() <= bottom)) {
|
||||
const KFileItem* fileItem = static_cast<KFileListViewItem*>(item)->fileInfo();
|
||||
setSelected(fileItem, rect.intersects(rubber));
|
||||
item = item->itemBelow();
|
||||
}
|
||||
else {
|
||||
bottomReached = true;
|
||||
}
|
||||
}
|
||||
|
||||
blockSignals(block);
|
||||
emit selectionChanged();
|
||||
|
||||
drawRubber();
|
||||
|
||||
// scroll the viewport if the top or bottom margin is reached
|
||||
const int scrollMargin = 40;
|
||||
ensureVisible(vc.x(), vc.y(), scrollMargin, scrollMargin);
|
||||
const bool scroll = !QRect(scrollMargin,
|
||||
scrollMargin,
|
||||
viewport()->width() - 2 * scrollMargin,
|
||||
viewport()->height() - 2 * scrollMargin).contains(pos);
|
||||
if (scroll) {
|
||||
if (m_scrollTimer == 0) {
|
||||
m_scrollTimer = new QTimer( this );
|
||||
connect(m_scrollTimer, SIGNAL(timeout()),
|
||||
this, SLOT(slotAutoScroll()));
|
||||
m_scrollTimer->start(100, false);
|
||||
}
|
||||
}
|
||||
else if (m_scrollTimer != 0) {
|
||||
disconnect(m_scrollTimer, SIGNAL(timeout()),
|
||||
this, SLOT(slotAutoScroll()));
|
||||
m_scrollTimer->stop();
|
||||
delete m_scrollTimer;
|
||||
m_scrollTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::updateColumnsWidth()
|
||||
{
|
||||
const int columnCount = columns();
|
||||
int requiredWidth = 0;
|
||||
for (int i = 1; i < columnCount; ++i) {
|
||||
// When a directory contains no items, a minimum width for
|
||||
// the column must be available, so that the header is readable.
|
||||
// TODO: use header data instead of the hardcoded 64 value...
|
||||
int columnWidth = 64;
|
||||
QFontMetrics fontMetrics(font());
|
||||
for (QListViewItem* item = firstChild(); item != 0; item = item->nextSibling()) {
|
||||
const int width = item->width(fontMetrics, this, i);
|
||||
if (width > columnWidth) {
|
||||
columnWidth = width;
|
||||
}
|
||||
}
|
||||
columnWidth += 16; // add custom margin
|
||||
setColumnWidth(i, columnWidth);
|
||||
requiredWidth += columnWidth;
|
||||
}
|
||||
|
||||
// resize the first column in a way that the
|
||||
// whole available width is used
|
||||
int firstColumnWidth = visibleWidth() - requiredWidth;
|
||||
if (firstColumnWidth < 128) {
|
||||
firstColumnWidth = 128;
|
||||
}
|
||||
setColumnWidth(0, firstColumnWidth);
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotItemRenamed(QListViewItem* item,
|
||||
const QString& name,
|
||||
int /* column */)
|
||||
{
|
||||
KFileItem* fileInfo = static_cast<KFileListViewItem*>(item)->fileInfo();
|
||||
m_dolphinView->rename(KURL(fileInfo->url()), name);
|
||||
}
|
||||
|
||||
void DolphinDetailsView::slotHeaderClicked(int /* section */)
|
||||
{
|
||||
// The sorting has already been changed in QListView if this slot is
|
||||
// invoked, but Dolphin was not informed about this (no signal is available
|
||||
// which indicates a change of the sorting). This is bypassed by changing
|
||||
// the sorting and sort order to a temporary other value and readjust it again.
|
||||
const int column = sortColumn();
|
||||
if (column <= DateColumn) {
|
||||
DolphinView::Sorting sorting = DolphinView::SortByName;
|
||||
switch (column) {
|
||||
case SizeColumn: sorting = DolphinView::SortBySize; break;
|
||||
case DateColumn: sorting = DolphinView::SortByDate; break;
|
||||
case NameColumn:
|
||||
default: break;
|
||||
}
|
||||
|
||||
const Qt::SortOrder currSortOrder = sortOrder();
|
||||
|
||||
// temporary adjust the sorting and sort order to different values...
|
||||
const DolphinView::Sorting tempSorting = (sorting == DolphinView::SortByName) ?
|
||||
DolphinView::SortBySize :
|
||||
DolphinView::SortByName;
|
||||
m_dolphinView->setSorting(tempSorting);
|
||||
const Qt::SortOrder tempSortOrder = (currSortOrder == Qt::Ascending) ?
|
||||
Qt::Descending : Qt::Ascending;
|
||||
m_dolphinView->setSortOrder(tempSortOrder);
|
||||
|
||||
// ... so that setting them again results in storing the new setting.
|
||||
m_dolphinView->setSorting(sorting);
|
||||
m_dolphinView->setSortOrder(currSortOrder);
|
||||
}
|
||||
}
|
||||
|
||||
DolphinDetailsView::DolphinListViewItem::DolphinListViewItem(QListView* parent,
|
||||
KFileItem* fileItem) :
|
||||
KFileListViewItem(parent, fileItem)
|
||||
{
|
||||
const int iconSize = DolphinSettings::instance().detailsView()->iconSize();
|
||||
KFileItem* info = fileInfo();
|
||||
setPixmap(DolphinDetailsView::NameColumn, info->pixmap(iconSize));
|
||||
|
||||
// The base class KFileListViewItem represents the column 'Size' only as byte values.
|
||||
// Adjust those values in a way that a mapping to GBytes, MBytes, KBytes and Bytes
|
||||
// is done. As the file size for directories is useless (only the size of the directory i-node
|
||||
// is given), it is removed completely.
|
||||
if (fileItem->isDir()) {
|
||||
setText(SizeColumn, " - ");
|
||||
}
|
||||
else {
|
||||
QString sizeText(KIO::convertSize(fileItem->size()));
|
||||
sizeText.append(" ");
|
||||
setText(SizeColumn, sizeText);
|
||||
}
|
||||
|
||||
// Dolphin allows to remove specific columns, but the base class KFileListViewItem
|
||||
// is not aware about this (or at least the class KFileDetailView does not react on
|
||||
// QListView::remove()). Therefore the columns are rearranged here.
|
||||
const DolphinDetailsViewSettings* settings = DolphinSettings::instance().detailsView();
|
||||
assert(settings != 0);
|
||||
|
||||
int column_idx = DateColumn; // the columns for 'name' and 'size' cannot get removed
|
||||
for (int i = DolphinDetailsView::DateColumn; i <= DolphinDetailsView::GroupColumn; ++i) {
|
||||
if (column_idx < i) {
|
||||
setText(column_idx, text(i));
|
||||
}
|
||||
if (settings->isColumnEnabled(i)) {
|
||||
++column_idx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DolphinDetailsView::DolphinListViewItem::~DolphinListViewItem()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinDetailsView::DolphinListViewItem::paintCell(QPainter* painter,
|
||||
const QColorGroup& colorGroup,
|
||||
int column,
|
||||
int cellWidth,
|
||||
int alignment)
|
||||
{
|
||||
const QListView* view = listView();
|
||||
const bool isActive = view->parent() == Dolphin::mainWin().activeView();
|
||||
if (isSelected()) {
|
||||
// Per default the selection is drawn above the whole width of the item. As a consistent
|
||||
// behavior with the icon view is wanted, only the the column containing the file name
|
||||
// should be shown as selected.
|
||||
QColorGroup defaultColorGroup(colorGroup);
|
||||
const QColor highlightColor(isActive ? backgroundColor(column) : view->colorGroup().background());
|
||||
defaultColorGroup.setColor(QColorGroup::Highlight , highlightColor);
|
||||
defaultColorGroup.setColor(QColorGroup::HighlightedText, colorGroup.color(QColorGroup::Text));
|
||||
KFileListViewItem::paintCell(painter, defaultColorGroup, column, cellWidth, alignment);
|
||||
|
||||
if (column == 0) {
|
||||
// draw the selection only on the first column
|
||||
QListView* parent = listView();
|
||||
const int itemWidth = width(parent->fontMetrics(), parent, 0);
|
||||
if (isActive) {
|
||||
KFileListViewItem::paintCell(painter, colorGroup, column, itemWidth, alignment);
|
||||
}
|
||||
else {
|
||||
QListViewItem::paintCell(painter, colorGroup, column, itemWidth, alignment);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (isActive) {
|
||||
KFileListViewItem::paintCell(painter, colorGroup, column, cellWidth, alignment);
|
||||
}
|
||||
else {
|
||||
QListViewItem::paintCell(painter, colorGroup, column, cellWidth, alignment);
|
||||
}
|
||||
}
|
||||
|
||||
if (column < listView()->columns() - 1) {
|
||||
// draw a separator between columns
|
||||
painter->setPen(KGlobalSettings::buttonBackground());
|
||||
painter->drawLine(cellWidth - 1, 0, cellWidth - 1, height() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinDetailsView::DolphinListViewItem::paintFocus(QPainter* painter,
|
||||
const QColorGroup& colorGroup,
|
||||
const QRect& rect)
|
||||
{
|
||||
// draw the focus consistently with the selection (see implementation notes
|
||||
// in DolphinListViewItem::paintCell)
|
||||
QListView* parent = listView();
|
||||
int visibleWidth = width(parent->fontMetrics(), parent, 0);
|
||||
const int colWidth = parent->columnWidth(0);
|
||||
if (visibleWidth > colWidth) {
|
||||
visibleWidth = colWidth;
|
||||
}
|
||||
|
||||
QRect focusRect(rect);
|
||||
focusRect.setWidth(visibleWidth);
|
||||
|
||||
KFileListViewItem::paintFocus(painter, colorGroup, focusRect);
|
||||
}
|
||||
|
||||
int DolphinDetailsView::filenameWidth(const QListViewItem* item) const
|
||||
{
|
||||
assert(item != 0);
|
||||
|
||||
int visibleWidth = item->width(fontMetrics(), this, 0);
|
||||
const int colWidth = columnWidth(0);
|
||||
if (visibleWidth > colWidth) {
|
||||
visibleWidth = colWidth;
|
||||
}
|
||||
|
||||
return visibleWidth;
|
||||
}
|
||||
#include "dolphindetailsview.moc"
|
@ -0,0 +1,216 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINDETAILSVIEW_H
|
||||
#define DOLPHINDETAILSVIEW_H
|
||||
|
||||
#include <kfiledetailview.h>
|
||||
#include <itemeffectsmanager.h>
|
||||
|
||||
class QRect;
|
||||
class QTimer;
|
||||
class DolphinView;
|
||||
|
||||
/**
|
||||
* @brief Represents the details view which shows the name, size,
|
||||
* date, permissions, owner and group of an item.
|
||||
*
|
||||
* The width of the columns are automatically adjusted in a way
|
||||
* that full available width of the view is used by stretching the width
|
||||
* of the name column.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class DolphinDetailsView : public KFileDetailView, public ItemEffectsManager
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* Maps the column indices of KFileDetailView to a
|
||||
* descriptive column name.
|
||||
*/
|
||||
enum ColumnName {
|
||||
NameColumn = 0,
|
||||
SizeColumn = 1,
|
||||
DateColumn = 2,
|
||||
PermissionsColumn = 3,
|
||||
OwnerColumn = 4,
|
||||
GroupColumn = 5
|
||||
};
|
||||
|
||||
DolphinDetailsView(DolphinView* parent);
|
||||
|
||||
virtual ~DolphinDetailsView();
|
||||
|
||||
/** @see ItemEffectsManager::updateItems */
|
||||
virtual void beginItemUpdates();
|
||||
|
||||
/** @see ItemEffectsManager::updateItems */
|
||||
virtual void endItemUpdates();
|
||||
|
||||
/** @see KFileView::insertItem */
|
||||
virtual void insertItem(KFileItem* fileItem);
|
||||
|
||||
/**
|
||||
* @return True, if the position \a pos is above the name of
|
||||
* item \a item.
|
||||
*/
|
||||
bool isOnFilename(const QListViewItem* item, const QPoint& pos) const;
|
||||
|
||||
/**
|
||||
* Reads out the dolphin settings for the details view and refreshs
|
||||
* the details view.
|
||||
*/
|
||||
// TODO: Other view implementations use a similar interface. When using
|
||||
// Interview in Qt4 this method should be moved to a base class (currently
|
||||
// not possible due to having different base classes for the views).
|
||||
void refreshSettings();
|
||||
|
||||
/** @see ItemEffectsManager::zoomIn() */
|
||||
virtual void zoomIn();
|
||||
|
||||
/** @see ItemEffectsManager::zoomOut() */
|
||||
virtual void zoomOut();
|
||||
|
||||
/** @see ItemEffectsManager::isZoomInPossible() */
|
||||
virtual bool isZoomInPossible() const;
|
||||
|
||||
/** @see ItemEffectsManager::isZoomOutPossible() */
|
||||
virtual bool isZoomOutPossible() const;
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Is send, if the details view should be activated. Usually an activation
|
||||
* is triggered by a mouse click.
|
||||
*/
|
||||
void signalRequestActivation();
|
||||
|
||||
public slots:
|
||||
/** @see KFileDetailView::resizeContents */
|
||||
virtual void resizeContents(int width, int height);
|
||||
|
||||
/** Is connected to the onItem-signal from KFileDetailView. */
|
||||
void slotOnItem(QListViewItem* item);
|
||||
|
||||
/** Is connected to the onViewport-signal from KFileDetailView. */
|
||||
void slotOnViewport();
|
||||
|
||||
protected:
|
||||
/** @see ItemEffectsManager::setContextPixmap() */
|
||||
virtual void setContextPixmap(void* context,
|
||||
const QPixmap& pixmap);
|
||||
|
||||
/** @see ItemEffectsManager::setContextPixmap() */
|
||||
virtual const QPixmap* contextPixmap(void* context);
|
||||
|
||||
/** @see ItemEffectsManager::setContextPixmap() */
|
||||
virtual void* firstContext();
|
||||
|
||||
/** @see ItemEffectsManager::setContextPixmap() */
|
||||
virtual void* nextContext(void* context);
|
||||
|
||||
/** @see ItemEffectsManager::setContextPixmap() */
|
||||
virtual KFileItem* contextFileInfo(void* context);
|
||||
|
||||
/** @see KFileDetailView::contentsDragMoveEvent() */
|
||||
virtual void contentsDragMoveEvent(QDragMoveEvent* event);
|
||||
|
||||
/** @see KFileDetailView::resizeEvent() */
|
||||
virtual void resizeEvent(QResizeEvent* event);
|
||||
|
||||
/** @see KFileDetailView::acceptDrag() */
|
||||
virtual bool acceptDrag (QDropEvent* event) const;
|
||||
|
||||
/** @see KFileDetailView::contentsDropEvent() */
|
||||
virtual void contentsDropEvent(QDropEvent* event);
|
||||
|
||||
/** @see KFileDetailView::contentsMousePressEvent() */
|
||||
virtual void contentsMousePressEvent(QMouseEvent* event);
|
||||
|
||||
/** @see KFileDetailView::contentsMouseMoveEvent() */
|
||||
virtual void contentsMouseMoveEvent(QMouseEvent* event);
|
||||
|
||||
/** @see KFileDetailView::contentsMouseReleaseEvent() */
|
||||
virtual void contentsMouseReleaseEvent(QMouseEvent* event);
|
||||
|
||||
/** @see QListView::paintEmptyArea() */
|
||||
virtual void paintEmptyArea(QPainter* painter, const QRect& rect);
|
||||
|
||||
/** Draws the selection rubber. */
|
||||
void drawRubber();
|
||||
|
||||
/** @see QListView::viewportPaintEvent() */
|
||||
virtual void viewportPaintEvent(QPaintEvent* paintEvent);
|
||||
|
||||
/** @see QWidget::leaveEvent() */
|
||||
virtual void leaveEvent(QEvent* event);
|
||||
|
||||
private slots:
|
||||
void slotActivationUpdate();
|
||||
void slotContextMenuRequested(QListViewItem* item,
|
||||
const QPoint& pos,
|
||||
int col);
|
||||
void slotUpdateDisabledItems();
|
||||
void slotAutoScroll();
|
||||
void updateColumnsWidth();
|
||||
void slotItemRenamed(QListViewItem* item,
|
||||
const QString& name,
|
||||
int column);
|
||||
|
||||
/**
|
||||
* Is invoked when a section from the header has
|
||||
* been clicked and stores the sort column and sort
|
||||
* order.
|
||||
*/
|
||||
void slotHeaderClicked(int section);
|
||||
|
||||
private:
|
||||
class DolphinListViewItem : public KFileListViewItem {
|
||||
public:
|
||||
DolphinListViewItem(QListView* parent,
|
||||
KFileItem* fileItem);
|
||||
virtual ~DolphinListViewItem();
|
||||
virtual void paintCell(QPainter* painter,
|
||||
const QColorGroup& colorGroup,
|
||||
int column,
|
||||
int cellWidth,
|
||||
int alignment);
|
||||
|
||||
virtual void paintFocus(QPainter* painter,
|
||||
const QColorGroup& colorGroup,
|
||||
const QRect& rect);
|
||||
};
|
||||
|
||||
DolphinView* m_dolphinView;
|
||||
QTimer* m_resizeTimer;
|
||||
QTimer* m_scrollTimer;
|
||||
QRect* m_rubber;
|
||||
|
||||
/**
|
||||
* Returns the width of the filename in pixels including
|
||||
* the icon. It is assured that the returned width is
|
||||
* <= the width of the filename column.
|
||||
*/
|
||||
int filenameWidth(const QListViewItem* item) const;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,108 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphindetailsviewsettings.h"
|
||||
#include "dolphindetailsview.h"
|
||||
#include <kglobalsettings.h>
|
||||
#include <kapplication.h>
|
||||
|
||||
DolphinDetailsViewSettings::DolphinDetailsViewSettings() :
|
||||
m_columnEnabled(0),
|
||||
m_iconSize(0),
|
||||
m_fontSize(0)
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("Details Mode");
|
||||
|
||||
// read which columns should be shown
|
||||
const bool showName = config->readBoolEntry("Show Name", true);
|
||||
const bool showSize = config->readBoolEntry("Show Size", true);
|
||||
const bool showDate = config->readBoolEntry("Show Date", true);
|
||||
const bool showPermissions = config->readBoolEntry("Show Permissions", false);
|
||||
const bool showOwner = config->readBoolEntry("Show Owner", false);
|
||||
const bool showGroup = config->readBoolEntry("Show Group", false);
|
||||
|
||||
setColumnEnabled(DolphinDetailsView::NameColumn, showName);
|
||||
setColumnEnabled(DolphinDetailsView::SizeColumn, showSize);
|
||||
setColumnEnabled(DolphinDetailsView::DateColumn, showDate);
|
||||
setColumnEnabled(DolphinDetailsView::PermissionsColumn, showPermissions);
|
||||
setColumnEnabled(DolphinDetailsView::OwnerColumn, showOwner);
|
||||
setColumnEnabled(DolphinDetailsView::GroupColumn, showGroup);
|
||||
|
||||
// read icon size
|
||||
m_iconSize = config->readNumEntry("Icon Size", KIcon::SizeSmall);
|
||||
|
||||
// read font size and font family
|
||||
m_fontSize = config->readNumEntry("Font Size", -1);
|
||||
m_fontFamily = config->readEntry("Font Family");
|
||||
|
||||
const QFont font(KGlobalSettings::generalFont());
|
||||
if (m_fontSize < 0) {
|
||||
m_fontSize = font.pointSize();
|
||||
}
|
||||
|
||||
if (m_fontFamily.isEmpty()) {
|
||||
m_fontFamily = font.family();
|
||||
}
|
||||
}
|
||||
|
||||
DolphinDetailsViewSettings::~DolphinDetailsViewSettings()
|
||||
{
|
||||
m_columnEnabled = 0;
|
||||
m_fontSize = 0;
|
||||
}
|
||||
|
||||
void DolphinDetailsViewSettings::setColumnEnabled(int column,
|
||||
bool enable)
|
||||
{
|
||||
if (enable) {
|
||||
m_columnEnabled = m_columnEnabled | (1 << column);
|
||||
}
|
||||
else {
|
||||
m_columnEnabled = m_columnEnabled & ~(1 << column);
|
||||
}
|
||||
}
|
||||
|
||||
bool DolphinDetailsViewSettings::isColumnEnabled(int column) const
|
||||
{
|
||||
return (m_columnEnabled & (1 << column)) > 0;
|
||||
}
|
||||
|
||||
void DolphinDetailsViewSettings::save()
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("Details Mode");
|
||||
|
||||
config->writeEntry("Show Name",
|
||||
isColumnEnabled(DolphinDetailsView::NameColumn));
|
||||
config->writeEntry("Show Size",
|
||||
isColumnEnabled(DolphinDetailsView::SizeColumn));
|
||||
config->writeEntry("Show Date",
|
||||
isColumnEnabled(DolphinDetailsView::DateColumn));
|
||||
config->writeEntry("Show Permissions",
|
||||
isColumnEnabled(DolphinDetailsView::PermissionsColumn));
|
||||
config->writeEntry("Show Owner",
|
||||
isColumnEnabled(DolphinDetailsView::OwnerColumn));
|
||||
config->writeEntry("Show Group",
|
||||
isColumnEnabled(DolphinDetailsView::GroupColumn));
|
||||
config->writeEntry("Icon Size", m_iconSize);
|
||||
config->writeEntry("Font Size", m_fontSize);
|
||||
config->writeEntry("Font Family", m_fontFamily);
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINDETAILSVIEWSETTINGS_H
|
||||
#define DOLPHINDETAILSVIEWSETTINGS_H
|
||||
|
||||
#include <qstring.h>
|
||||
#include <qnamespace.h>
|
||||
#include <dolphinsettingsbase.h>
|
||||
|
||||
/**
|
||||
* @brief Contains the settings for the details view.
|
||||
*
|
||||
* The following properties are stored:
|
||||
* - enabled columns
|
||||
* - sorted column
|
||||
* - sort order for the sorted column
|
||||
* - icon size
|
||||
* - font family
|
||||
* - font size
|
||||
*
|
||||
* @see DolphinDetailsView
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DolphinDetailsViewSettings : public DolphinSettingsBase
|
||||
{
|
||||
public:
|
||||
DolphinDetailsViewSettings();
|
||||
|
||||
virtual ~DolphinDetailsViewSettings();
|
||||
|
||||
void setColumnEnabled(int column, bool enable);
|
||||
bool isColumnEnabled(int column) const;
|
||||
|
||||
void setIconSize(int size) { m_iconSize = size; }
|
||||
int iconSize() const { return m_iconSize; }
|
||||
|
||||
void setFontFamily(const QString& family) { m_fontFamily = family; }
|
||||
const QString& fontFamily() const { return m_fontFamily; }
|
||||
|
||||
void setFontSize(int size) { m_fontSize = size; }
|
||||
int fontSize() const { return m_fontSize; }
|
||||
|
||||
/** @see DolphinSettingsBase::save() */
|
||||
virtual void save();
|
||||
|
||||
private:
|
||||
int m_columnEnabled;
|
||||
int m_iconSize;
|
||||
int m_fontSize;
|
||||
QString m_fontFamily;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,42 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphindirlister.h"
|
||||
#include <kio/jobclasses.h>
|
||||
|
||||
// TODO:
|
||||
#include <stdio.h>
|
||||
|
||||
DolphinDirLister::DolphinDirLister() :
|
||||
KDirLister(true)
|
||||
{
|
||||
}
|
||||
|
||||
DolphinDirLister::~DolphinDirLister()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinDirLister::handleError(KIO::Job* job)
|
||||
{
|
||||
// TODO: some error texts should be adjusted manually
|
||||
emit errorMessage(job->errorString());
|
||||
}
|
||||
|
||||
#include "dolphindirlister.moc"
|
@ -0,0 +1,48 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINDIRLISTER_H
|
||||
#define DOLPHINDIRLISTER_H
|
||||
|
||||
#include <kdirlister.h>
|
||||
|
||||
/**
|
||||
* @brief Extends the class KDirLister by emitting an error
|
||||
* signal containing text.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class DolphinDirLister : public KDirLister
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DolphinDirLister();
|
||||
virtual ~DolphinDirLister();
|
||||
|
||||
signals:
|
||||
/** Is emitted whenever an error occured. */
|
||||
void errorMessage(const QString& msg);
|
||||
|
||||
protected:
|
||||
virtual void handleError(KIO::Job* job);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,500 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphiniconsview.h"
|
||||
#include <qpainter.h>
|
||||
#include <kiconeffect.h>
|
||||
#include <kapplication.h>
|
||||
#include <qobjectlist.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <kurldrag.h>
|
||||
#include <qclipboard.h>
|
||||
#include <assert.h>
|
||||
#include <kaction.h>
|
||||
#include <kstdaction.h>
|
||||
#include <kfileitem.h>
|
||||
|
||||
#include "dolphinview.h"
|
||||
#include "viewproperties.h"
|
||||
#include "dolphin.h"
|
||||
#include "dolphinstatusbar.h"
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphiniconsviewsettings.h"
|
||||
|
||||
DolphinIconsView::DolphinIconsView(DolphinView* parent, LayoutMode layoutMode) :
|
||||
KFileIconView(parent, 0),
|
||||
m_previewIconSize(-1),
|
||||
m_layoutMode(layoutMode),
|
||||
m_dolphinView(parent)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
setMode(KIconView::Execute);
|
||||
setSelectionMode(KFile::Extended);
|
||||
Dolphin& dolphin = Dolphin::mainWin();
|
||||
|
||||
connect(this, SIGNAL(onItem(QIconViewItem*)),
|
||||
this, SLOT(slotOnItem(QIconViewItem*)));
|
||||
connect(this, SIGNAL(onViewport()),
|
||||
this, SLOT(slotOnViewport()));
|
||||
connect(this, SIGNAL(contextMenuRequested(QIconViewItem*, const QPoint&)),
|
||||
this, SLOT(slotContextMenuRequested(QIconViewItem*, const QPoint&)));
|
||||
connect(this, SIGNAL(selectionChanged()),
|
||||
&dolphin, SLOT(slotSelectionChanged()));
|
||||
connect(&dolphin, SIGNAL(activeViewChanged()),
|
||||
this, SLOT(slotActivationUpdate()));
|
||||
connect(this, SIGNAL(itemRenamed(QIconViewItem*, const QString&)),
|
||||
this, SLOT(slotItemRenamed(QIconViewItem*, const QString&)));
|
||||
connect(this, SIGNAL(dropped(QDropEvent*, const KURL::List&, const KURL&)),
|
||||
parent, SLOT(slotURLListDropped(QDropEvent*, const KURL::List&, const KURL&)));
|
||||
|
||||
QClipboard* clipboard = QApplication::clipboard();
|
||||
connect(clipboard, SIGNAL(dataChanged()),
|
||||
this, SLOT(slotUpdateDisabledItems()));
|
||||
|
||||
// KFileIconView creates two actions for zooming, which are directly connected to the
|
||||
// slots KFileIconView::zoomIn() and KFileIconView::zoomOut(). As this behavior is not
|
||||
// wanted and the slots are not virtual, the actions are disabled here.
|
||||
KAction* zoomInAction = actionCollection()->action("zoomIn");
|
||||
assert(zoomInAction != 0);
|
||||
zoomInAction->setEnabled(false);
|
||||
|
||||
KAction* zoomOutAction = actionCollection()->action("zoomOut");
|
||||
assert(zoomOutAction != 0);
|
||||
zoomOutAction->setEnabled(false);
|
||||
|
||||
setItemsMovable(true);
|
||||
setWordWrapIconText(true);
|
||||
if (m_layoutMode == Previews) {
|
||||
showPreviews();
|
||||
}
|
||||
refreshSettings();
|
||||
}
|
||||
|
||||
DolphinIconsView::~DolphinIconsView()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinIconsView::setLayoutMode(LayoutMode mode)
|
||||
{
|
||||
if (m_layoutMode != mode) {
|
||||
m_layoutMode = mode;
|
||||
refreshSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::beginItemUpdates()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinIconsView::endItemUpdates()
|
||||
{
|
||||
arrangeItemsInGrid();
|
||||
|
||||
// TODO: KFileIconView does not emit any signal when the preview
|
||||
// has been finished. Using a delay of 300 ms is a temporary workaround
|
||||
// until the DolphinIconsView will implement the previews by it's own in
|
||||
// future releases.
|
||||
QTimer::singleShot(300, this, SLOT(slotUpdateDisabledItems()));
|
||||
|
||||
const KFileIconViewItem* item = static_cast<const KFileIconViewItem*>(firstItem());
|
||||
if (item != 0) {
|
||||
setCurrentItem(item->fileInfo());
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
const QValueList<URLNavigator::HistoryElem> history = m_dolphinView->urlHistory(index);
|
||||
if (!history.isEmpty()) {
|
||||
KFileView* fileView = static_cast<KFileView*>(this);
|
||||
fileView->setCurrentItem(history[index].currentFileName());
|
||||
setContentsPos(history[index].contentsX(), history[index].contentsY());
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::refreshSettings()
|
||||
{
|
||||
const DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_layoutMode);
|
||||
assert(settings != 0);
|
||||
|
||||
setIconSize(settings->iconSize());
|
||||
|
||||
const QIconView::Arrangement arrangement = settings->arrangement();
|
||||
const QIconView::ItemTextPos textPos = (arrangement == QIconView::LeftToRight) ?
|
||||
QIconView::Bottom :
|
||||
QIconView::Right;
|
||||
setArrangement(arrangement);
|
||||
setItemTextPos(textPos);
|
||||
|
||||
setGridX(settings->gridWidth());
|
||||
setGridY(settings->gridHeight());
|
||||
setSpacing(settings->gridSpacing());
|
||||
|
||||
QFont adjustedFont(font());
|
||||
adjustedFont.setFamily(settings->fontFamily());
|
||||
adjustedFont.setPointSize(settings->fontSize());
|
||||
setFont(adjustedFont);
|
||||
setIconTextHeight(settings->textlinesCount());
|
||||
|
||||
if (m_layoutMode == Previews) {
|
||||
// There is no getter method for the current size in KFileIconView. To
|
||||
// prevent a flickering the current size is stored in m_previewIconSize and
|
||||
// setPreviewSize is only invoked if the size really has changed.
|
||||
showPreviews();
|
||||
|
||||
const int size = settings->previewSize();
|
||||
if (size != m_previewIconSize) {
|
||||
m_previewIconSize = size;
|
||||
setPreviewSize(size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::zoomIn()
|
||||
{
|
||||
if (isZoomInPossible()) {
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_layoutMode);
|
||||
const int textWidthHint = settings->textWidthHint();
|
||||
|
||||
const int iconSize = increasedIconSize(settings->iconSize());
|
||||
settings->setIconSize(iconSize);
|
||||
|
||||
if (m_layoutMode == Previews) {
|
||||
const int previewSize = increasedIconSize(settings->previewSize());
|
||||
settings->setPreviewSize(previewSize);
|
||||
}
|
||||
|
||||
settings->calculateGridSize(textWidthHint);
|
||||
ItemEffectsManager::zoomIn();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::zoomOut()
|
||||
{
|
||||
if (isZoomOutPossible()) {
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_layoutMode);
|
||||
const int textWidthHint = settings->textWidthHint();
|
||||
|
||||
const int iconSize = decreasedIconSize(settings->iconSize());
|
||||
settings->setIconSize(iconSize);
|
||||
|
||||
if (m_layoutMode == Previews) {
|
||||
const int previewSize = decreasedIconSize(settings->previewSize());
|
||||
settings->setPreviewSize(previewSize);
|
||||
}
|
||||
|
||||
settings->calculateGridSize(textWidthHint);
|
||||
ItemEffectsManager::zoomOut();
|
||||
}
|
||||
}
|
||||
|
||||
bool DolphinIconsView::isZoomInPossible() const
|
||||
{
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_layoutMode);
|
||||
const int size = (m_layoutMode == Icons) ? settings->iconSize() : settings->previewSize();
|
||||
return size < KIcon::SizeEnormous;
|
||||
}
|
||||
|
||||
bool DolphinIconsView::isZoomOutPossible() const
|
||||
{
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_layoutMode);
|
||||
return settings->iconSize() > KIcon::SizeSmall;
|
||||
}
|
||||
|
||||
void DolphinIconsView::arrangeItemsInGrid( bool updated )
|
||||
{
|
||||
|
||||
KFileIconView::arrangeItemsInGrid(updated);
|
||||
|
||||
if (m_layoutMode == Previews) {
|
||||
// The class KFileIconView has a bug when the size of the previews differs from the size
|
||||
// of the icons: For specific MIME types the y-position and the height is calculated in
|
||||
// a wrong manner. The following code bypasses this issue. No bugreport has been submitted
|
||||
// as this functionality is not used by any KDE3 application and the core developers are
|
||||
// busy enough for KDE4 now :-)
|
||||
|
||||
KFileIconViewItem* item = static_cast<KFileIconViewItem*>(QIconView::firstItem());
|
||||
QString mimetype;
|
||||
while (item != 0) {
|
||||
mimetype = item->fileInfo()->mimetype();
|
||||
const bool fixSize = mimetype.contains("text") ||
|
||||
mimetype.contains("application/x-");
|
||||
if (fixSize) {
|
||||
item->setPixmapSize(QSize(m_previewIconSize, m_previewIconSize));
|
||||
}
|
||||
item = static_cast<KFileIconViewItem *>(item->nextItem());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::setContextPixmap(void* context,
|
||||
const QPixmap& pixmap)
|
||||
{
|
||||
reinterpret_cast<KFileIconViewItem*>(context)->setPixmap(pixmap);
|
||||
}
|
||||
|
||||
const QPixmap* DolphinIconsView::contextPixmap(void* context)
|
||||
{
|
||||
return reinterpret_cast<KFileIconViewItem*>(context)->pixmap();
|
||||
}
|
||||
|
||||
void* DolphinIconsView::firstContext()
|
||||
{
|
||||
return reinterpret_cast<void*>(firstItem());
|
||||
}
|
||||
|
||||
void* DolphinIconsView::nextContext(void* context)
|
||||
{
|
||||
KFileIconViewItem* iconViewItem = reinterpret_cast<KFileIconViewItem*>(context);
|
||||
return reinterpret_cast<void*>(iconViewItem->nextItem());
|
||||
}
|
||||
|
||||
KFileItem* DolphinIconsView::contextFileInfo(void* context)
|
||||
{
|
||||
return reinterpret_cast<KFileIconViewItem*>(context)->fileInfo();
|
||||
}
|
||||
|
||||
void DolphinIconsView::contentsMousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
KFileIconView::contentsMousePressEvent(event);
|
||||
resetActivatedItem();
|
||||
emit signalRequestActivation();
|
||||
m_dolphinView->statusBar()->clear();
|
||||
}
|
||||
|
||||
void DolphinIconsView::contentsMouseReleaseEvent(QMouseEvent* event)
|
||||
{
|
||||
KFileIconView::contentsMouseReleaseEvent(event);
|
||||
|
||||
// The KFileIconView does not send any selectionChanged signal if
|
||||
// a selection is done by using the "select-during-button-pressed" feature.
|
||||
// Hence inform Dolphin about the selection change manually:
|
||||
Dolphin::mainWin().slotSelectionChanged();
|
||||
}
|
||||
|
||||
void DolphinIconsView::drawBackground(QPainter* painter, const QRect& rect)
|
||||
{
|
||||
if (m_dolphinView->isActive()) {
|
||||
KFileIconView::drawBackground(painter, rect);
|
||||
}
|
||||
else {
|
||||
const QBrush brush(colorGroup().background());
|
||||
painter->fillRect(0, 0, width(), height(), brush);
|
||||
}
|
||||
}
|
||||
|
||||
QDragObject* DolphinIconsView::dragObject()
|
||||
{
|
||||
KURL::List urls;
|
||||
KFileItemListIterator it(*KFileView::selectedItems());
|
||||
while (it.current() != 0) {
|
||||
urls.append((*it)->url());
|
||||
++it;
|
||||
}
|
||||
|
||||
QPixmap pixmap;
|
||||
if(urls.count() > 1) {
|
||||
pixmap = DesktopIcon("kmultiple", iconSize());
|
||||
}
|
||||
else {
|
||||
KFileIconViewItem* item = static_cast<KFileIconViewItem*>(currentItem());
|
||||
if ((item != 0) && (item->pixmap() != 0)) {
|
||||
pixmap = *(item->pixmap());
|
||||
}
|
||||
}
|
||||
|
||||
if (pixmap.isNull()) {
|
||||
pixmap = currentFileItem()->pixmap(iconSize());
|
||||
}
|
||||
|
||||
QDragObject* dragObj = new KURLDrag(urls, widget());
|
||||
dragObj->setPixmap(pixmap);
|
||||
return dragObj;
|
||||
}
|
||||
|
||||
void DolphinIconsView::contentsDragEnterEvent(QDragEnterEvent* event)
|
||||
{
|
||||
// TODO: The method KFileIconView::contentsDragEnterEvent() does
|
||||
// not allow drag and drop inside itself, which prevents the possability
|
||||
// to move a file into a directory. As the method KFileIconView::acceptDrag()
|
||||
// is not virtual, we must overwrite the method
|
||||
// KFileIconView::contentsDragEnterEvent() and do some cut/copy/paste for this
|
||||
// usecase. Corresponding to the documentation the method KFileIconView::acceptDrag()
|
||||
// will get virtual in KDE 4, which will simplify the code.
|
||||
|
||||
if (event->source() != this) {
|
||||
KFileIconView::contentsDragEnterEvent(event);
|
||||
return;
|
||||
}
|
||||
|
||||
const bool accept = KURLDrag::canDecode(event) &&
|
||||
(event->action() == QDropEvent::Copy ||
|
||||
event->action() == QDropEvent::Move ||
|
||||
event->action() == QDropEvent::Link );
|
||||
if (accept) {
|
||||
event->acceptAction();
|
||||
}
|
||||
else {
|
||||
event->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::contentsDragMoveEvent(QDragMoveEvent* event)
|
||||
{
|
||||
KFileIconView::contentsDragMoveEvent(event);
|
||||
|
||||
// If a dragging is done above a directory, show the icon as 'active' for
|
||||
// a visual feedback
|
||||
KFileIconViewItem* item = static_cast<KFileIconViewItem*>(findItem(contentsToViewport(event->pos())));
|
||||
|
||||
bool showActive = false;
|
||||
if (item != 0) {
|
||||
const KFileItem* fileInfo = item->fileInfo();
|
||||
showActive = (fileInfo != 0) && fileInfo->isDir();
|
||||
}
|
||||
|
||||
if (showActive) {
|
||||
slotOnItem(item);
|
||||
}
|
||||
else {
|
||||
slotOnViewport();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::contentsDropEvent(QDropEvent* event)
|
||||
{
|
||||
// TODO: Most of the following code is a copy of
|
||||
// KFileIconView::contentsDropEvent. See comment in
|
||||
// DolphinIconsView::contentsDragEnterEvent for details.
|
||||
|
||||
if (event->source() != this) {
|
||||
KFileIconView::contentsDropEvent(event);
|
||||
return;
|
||||
}
|
||||
|
||||
KFileIconViewItem* item = static_cast<KFileIconViewItem*>(findItem(contentsToViewport(event->pos())));
|
||||
const bool accept = KURLDrag::canDecode(event) &&
|
||||
(event->action() == QDropEvent::Copy ||
|
||||
event->action() == QDropEvent::Move ||
|
||||
event->action() == QDropEvent::Link ) &&
|
||||
(item != 0);
|
||||
if (!accept) {
|
||||
return;
|
||||
}
|
||||
|
||||
KFileItem* fileItem = item->fileInfo();
|
||||
if (!fileItem->isDir()) {
|
||||
// the file is not a directory, hence don't accept any drop
|
||||
return;
|
||||
}
|
||||
emit dropped(event, fileItem);
|
||||
KURL::List urls;
|
||||
if (KURLDrag::decode(event, urls) && !urls.isEmpty()) {
|
||||
emit dropped(event, urls, fileItem != 0 ? fileItem->url() : KURL());
|
||||
sig->dropURLs(fileItem, event, urls);
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::slotOnItem(QIconViewItem* item)
|
||||
{
|
||||
assert(item != 0);
|
||||
activateItem(reinterpret_cast<void*>(item));
|
||||
|
||||
KFileItem* fileItem = static_cast<KFileIconViewItem*>(item)->fileInfo();
|
||||
m_dolphinView->requestItemInfo(fileItem->url());
|
||||
}
|
||||
|
||||
void DolphinIconsView::slotOnViewport()
|
||||
{
|
||||
resetActivatedItem();
|
||||
m_dolphinView->requestItemInfo(KURL());
|
||||
}
|
||||
|
||||
void DolphinIconsView::slotContextMenuRequested(QIconViewItem* item,
|
||||
const QPoint& pos)
|
||||
{
|
||||
KFileItem* fileInfo = 0;
|
||||
if (item != 0) {
|
||||
fileInfo = static_cast<KFileIconViewItem*>(item)->fileInfo();
|
||||
}
|
||||
m_dolphinView->openContextMenu(fileInfo, pos);
|
||||
}
|
||||
|
||||
void DolphinIconsView::slotItemRenamed(QIconViewItem* item,
|
||||
const QString& name)
|
||||
{
|
||||
KFileItem* fileInfo = static_cast<KFileIconViewItem*>(item)->fileInfo();
|
||||
m_dolphinView->rename(KURL(fileInfo->url()), name);
|
||||
}
|
||||
|
||||
void DolphinIconsView::slotActivationUpdate()
|
||||
{
|
||||
update();
|
||||
|
||||
// TODO: there must be a simpler way to say
|
||||
// "update all children"
|
||||
const QObjectList* list = children();
|
||||
if (list == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
QObjectListIterator it(*list);
|
||||
QObject* object = 0;
|
||||
while ((object = it.current()) != 0) {
|
||||
if (object->inherits("QWidget")) {
|
||||
QWidget* widget = static_cast<QWidget*>(object);
|
||||
widget->update();
|
||||
}
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinIconsView::slotUpdateDisabledItems()
|
||||
{
|
||||
updateDisabledItems();
|
||||
}
|
||||
|
||||
int DolphinIconsView::increasedIconSize(int size) const
|
||||
{
|
||||
int incSize = 0;
|
||||
switch (size) {
|
||||
case KIcon::SizeSmall: incSize = KIcon::SizeSmallMedium; break;
|
||||
case KIcon::SizeSmallMedium: incSize = KIcon::SizeMedium; break;
|
||||
case KIcon::SizeMedium: incSize = KIcon::SizeLarge; break;
|
||||
case KIcon::SizeLarge: incSize = KIcon::SizeHuge; break;
|
||||
case KIcon::SizeHuge: incSize = KIcon::SizeEnormous; break;
|
||||
default: assert(false); break;
|
||||
}
|
||||
return incSize;
|
||||
}
|
||||
|
||||
int DolphinIconsView::decreasedIconSize(int size) const
|
||||
{
|
||||
int decSize = 0;
|
||||
switch (size) {
|
||||
case KIcon::SizeSmallMedium: decSize = KIcon::SizeSmall; break;
|
||||
case KIcon::SizeMedium: decSize = KIcon::SizeSmallMedium; break;
|
||||
case KIcon::SizeLarge: decSize = KIcon::SizeMedium; break;
|
||||
case KIcon::SizeHuge: decSize = KIcon::SizeLarge; break;
|
||||
case KIcon::SizeEnormous: decSize = KIcon::SizeHuge; break;
|
||||
default: assert(false); break;
|
||||
}
|
||||
return decSize;
|
||||
}
|
||||
|
||||
#include "dolphiniconsview.moc"
|
@ -0,0 +1,168 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINICONSVIEW_H
|
||||
#define DOLPHINICONSVIEW_H
|
||||
|
||||
#include <kfileiconview.h>
|
||||
#include <qpixmap.h>
|
||||
#include <kurl.h>
|
||||
#include <itemeffectsmanager.h>
|
||||
|
||||
class DolphinView;
|
||||
|
||||
/**
|
||||
* @brief Represents the view, where each item is shown as an icon.
|
||||
*
|
||||
* It is also possible that instead of the icon a preview of the item
|
||||
* content is shown.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class DolphinIconsView : public KFileIconView, public ItemEffectsManager
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum LayoutMode {
|
||||
Icons,
|
||||
Previews
|
||||
};
|
||||
|
||||
DolphinIconsView(DolphinView *parent, LayoutMode layoutMode);
|
||||
|
||||
virtual ~DolphinIconsView();
|
||||
|
||||
void setLayoutMode(LayoutMode mode);
|
||||
LayoutMode layoutMode() const { return m_layoutMode; }
|
||||
|
||||
/** @see ItemEffectsManager::updateItems */
|
||||
virtual void beginItemUpdates();
|
||||
|
||||
/** @see ItemEffectsManager::updateItems */
|
||||
virtual void endItemUpdates();
|
||||
|
||||
/**
|
||||
* Reads out the dolphin settings for the icons view and refreshs
|
||||
* the details view.
|
||||
*/
|
||||
// TODO: Other view implementations use a similar interface. When using
|
||||
// Interview in Qt4 this method should be moved to a base class (currently
|
||||
// not possible due to having different base classes for the views).
|
||||
void refreshSettings();
|
||||
|
||||
/** @see ItemEffectsManager::zoomIn() */
|
||||
virtual void zoomIn();
|
||||
|
||||
/** @see ItemEffectsManager::zoomOut() */
|
||||
virtual void zoomOut();
|
||||
|
||||
/** @see ItemEffectsManager::isZoomInPossible() */
|
||||
virtual bool isZoomInPossible() const;
|
||||
|
||||
/** @see ItemEffectsManager::isZoomOutPossible() */
|
||||
virtual bool isZoomOutPossible() const;
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* Bypass a layout issue in KFileIconView in combination with previews.
|
||||
* @see KFileIconView::arrangeItemsInGrid
|
||||
*/
|
||||
virtual void arrangeItemsInGrid(bool updated = true);
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Is send, if the details view should be activated. Usually an activation
|
||||
* is triggered by a mouse click.
|
||||
*/
|
||||
void signalRequestActivation();
|
||||
|
||||
protected:
|
||||
/** @see ItemEffectsManager::setContextPixmap */
|
||||
virtual void setContextPixmap(void* context,
|
||||
const QPixmap& pixmap);
|
||||
|
||||
/** @see ItemEffectsManager::contextPixmap */
|
||||
virtual const QPixmap* contextPixmap(void* context);
|
||||
|
||||
/** @see ItemEffectsManager::firstContext */
|
||||
virtual void* firstContext();
|
||||
|
||||
/** @see ItemEffectsManager::nextContext */
|
||||
virtual void* nextContext(void* context);
|
||||
|
||||
/** @see ItemEffectsManager::contextFileInfo */
|
||||
virtual KFileItem* contextFileInfo(void* context);
|
||||
|
||||
/** @see KFileIconView::contentsMousePressEvent */
|
||||
virtual void contentsMousePressEvent(QMouseEvent* event);
|
||||
|
||||
/** @see KFileIconView::contentsMouseReleaseEvent */
|
||||
virtual void contentsMouseReleaseEvent(QMouseEvent* event);
|
||||
|
||||
/** @see KFileIconView::drawBackground */
|
||||
virtual void drawBackground(QPainter* painter, const QRect& rect);
|
||||
|
||||
/** @see KFileIconView::dragObject */
|
||||
virtual QDragObject* dragObject();
|
||||
|
||||
/** @see KFileIconView::contentsDragEnterEvent */
|
||||
virtual void contentsDragEnterEvent(QDragEnterEvent* event);
|
||||
|
||||
/** @see KFileIconView::contentsDragMoveEvent */
|
||||
virtual void contentsDragMoveEvent(QDragMoveEvent* event);
|
||||
|
||||
/** @see KFileIconView::contentsDropEvent */
|
||||
virtual void contentsDropEvent(QDropEvent* event);
|
||||
|
||||
private slots:
|
||||
/** Is connected to the onItem-signal from KFileIconView. */
|
||||
void slotOnItem(QIconViewItem* item);
|
||||
|
||||
/** Is connected to the onViewport-signal from KFileIconView. */
|
||||
void slotOnViewport();
|
||||
|
||||
/**
|
||||
* Opens the context menu for the item \a item on the given
|
||||
* position \a pos.
|
||||
*/
|
||||
void slotContextMenuRequested(QIconViewItem* item,
|
||||
const QPoint& pos);
|
||||
|
||||
/** Renames the item \a item to the name \a name. */
|
||||
void slotItemRenamed(QIconViewItem* item,
|
||||
const QString& name);
|
||||
|
||||
void slotActivationUpdate();
|
||||
void slotUpdateDisabledItems();
|
||||
|
||||
private:
|
||||
int m_previewIconSize;
|
||||
LayoutMode m_layoutMode;
|
||||
DolphinView* m_dolphinView;
|
||||
|
||||
/** Returns the increased icon size for the size \a size. */
|
||||
int increasedIconSize(int size) const;
|
||||
|
||||
/** Returns the decreased icon size for the size \a size. */
|
||||
int decreasedIconSize(int size) const;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,199 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphiniconsviewsettings.h"
|
||||
#include <kicontheme.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <kapplication.h>
|
||||
#include <assert.h>
|
||||
|
||||
DolphinIconsViewSettings::DolphinIconsViewSettings(DolphinIconsView::LayoutMode mode) :
|
||||
m_arrangement(QIconView::LeftToRight),
|
||||
m_layoutMode(mode),
|
||||
m_iconSize(KIcon::SizeMedium),
|
||||
m_previewSize(KIcon::SizeMedium),
|
||||
m_gridWidth(0),
|
||||
m_gridHeight(KIcon::SizeMedium),
|
||||
m_gridSpacing(8),
|
||||
m_fontSize(0),
|
||||
m_textlinesCount(2)
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
setConfigGroup(config);
|
||||
|
||||
// read icon size
|
||||
m_iconSize = config->readNumEntry("Icon Size", -1);
|
||||
if (m_iconSize < 0) {
|
||||
m_iconSize = KIcon::SizeMedium;
|
||||
}
|
||||
|
||||
// read arrangement
|
||||
const QString arrangement(config->readEntry("Arrangement"));
|
||||
if (arrangement == "Left to Right") {
|
||||
m_arrangement = QIconView::LeftToRight;
|
||||
}
|
||||
else if (arrangement == "Top to Bottom") {
|
||||
m_arrangement = QIconView::TopToBottom;
|
||||
}
|
||||
|
||||
// read preview size, grid width and grid height
|
||||
m_previewSize = config->readNumEntry("Preview Size", -1);
|
||||
m_gridWidth = config->readNumEntry("Grid Width", -1);
|
||||
m_gridHeight = config->readNumEntry("Grid Height", -1);
|
||||
m_gridSpacing = config->readNumEntry("Grid Spacing", -1);
|
||||
|
||||
if (mode == DolphinIconsView::Previews) {
|
||||
if (m_previewSize < 0) {
|
||||
m_previewSize = KIcon::SizeEnormous;
|
||||
}
|
||||
if (m_gridWidth < 0) {
|
||||
m_gridWidth = m_previewSize + (m_previewSize / 2);
|
||||
}
|
||||
}
|
||||
else if (m_gridWidth < 0) {
|
||||
m_gridWidth = m_iconSize + (m_iconSize / 2) + (KIcon::SizeLarge * 2);
|
||||
}
|
||||
|
||||
if (m_gridHeight < 0) {
|
||||
m_gridHeight = m_iconSize * 2;
|
||||
}
|
||||
|
||||
// read font size and font family
|
||||
m_fontSize = config->readNumEntry("Font Size", -1);
|
||||
m_fontFamily = config->readEntry("Font Family");
|
||||
|
||||
const QFont font(KGlobalSettings::generalFont());
|
||||
if (m_fontSize < 0) {
|
||||
m_fontSize = font.pointSize();
|
||||
}
|
||||
|
||||
if (m_fontFamily.isEmpty()) {
|
||||
m_fontFamily = font.family();
|
||||
}
|
||||
|
||||
// read textlines count
|
||||
m_textlinesCount = config->readNumEntry("Number of Textlines", 2);
|
||||
}
|
||||
|
||||
|
||||
DolphinIconsViewSettings::~DolphinIconsViewSettings()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinIconsViewSettings::setIconSize(int size)
|
||||
{
|
||||
// TODO: add boundaries check
|
||||
m_iconSize = size;
|
||||
}
|
||||
|
||||
void DolphinIconsViewSettings::setPreviewSize(int size)
|
||||
{
|
||||
// TODO: add boundaries check
|
||||
m_previewSize = size;
|
||||
}
|
||||
|
||||
void DolphinIconsViewSettings::setGridSpacing(int spacing)
|
||||
{
|
||||
// TODO: add boundaries check
|
||||
m_gridSpacing = spacing;
|
||||
}
|
||||
|
||||
void DolphinIconsViewSettings::save()
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
setConfigGroup(config);
|
||||
|
||||
config->writeEntry("Icon Size", m_iconSize);
|
||||
if (m_arrangement == QIconView::LeftToRight) {
|
||||
config->writeEntry("Arrangement", "Left to Right");
|
||||
}
|
||||
else {
|
||||
config->writeEntry("Arrangement", "Top to Bottom");
|
||||
}
|
||||
|
||||
config->writeEntry("Preview Size", m_previewSize);
|
||||
config->writeEntry("Grid Width", m_gridWidth);
|
||||
config->writeEntry("Grid Height", m_gridHeight);
|
||||
config->writeEntry("Grid Spacing", m_gridSpacing);
|
||||
config->writeEntry("Font Size", m_fontSize);
|
||||
config->writeEntry("Font Family", m_fontFamily);
|
||||
config->writeEntry("Number of Textlines", m_textlinesCount);
|
||||
}
|
||||
|
||||
void DolphinIconsViewSettings::calculateGridSize(int hint)
|
||||
{
|
||||
const int maxSize = (m_previewSize > m_iconSize) ? m_previewSize : m_iconSize;
|
||||
if (m_arrangement == QIconView::LeftToRight) {
|
||||
int widthUnit = maxSize + (maxSize / 2);
|
||||
if (widthUnit < KIcon::SizeLarge) {
|
||||
widthUnit = KIcon::SizeLarge;
|
||||
}
|
||||
//m_gridWidth = widthUnit + hint * KIcon::SizeLarge;
|
||||
m_gridWidth = widthUnit + hint * KIcon::SizeLarge;
|
||||
|
||||
m_gridHeight = m_iconSize;
|
||||
if (m_gridHeight <= KIcon::SizeMedium) {
|
||||
m_gridHeight = m_gridHeight * 2;
|
||||
}
|
||||
else {
|
||||
m_gridHeight += maxSize / 2;
|
||||
}
|
||||
}
|
||||
else {
|
||||
assert(m_arrangement == QIconView::TopToBottom);
|
||||
m_gridWidth = maxSize + (hint + 1) * (8 * m_fontSize);
|
||||
|
||||
// The height-setting is ignored yet by KFileIconView if the TopToBottom
|
||||
// arrangement is active. Anyway write the setting to have a defined value.
|
||||
m_gridHeight = maxSize;
|
||||
}
|
||||
}
|
||||
|
||||
int DolphinIconsViewSettings::textWidthHint() const
|
||||
{
|
||||
const int maxSize = (m_previewSize > m_iconSize) ? m_previewSize : m_iconSize;
|
||||
int hint = 0;
|
||||
if (m_arrangement == QIconView::LeftToRight) {
|
||||
int widthUnit = maxSize + (maxSize / 2);
|
||||
if (widthUnit < KIcon::SizeLarge) {
|
||||
widthUnit = KIcon::SizeLarge;
|
||||
}
|
||||
hint = (m_gridWidth - widthUnit) / KIcon::SizeLarge;
|
||||
}
|
||||
else {
|
||||
assert(m_arrangement == QIconView::TopToBottom);
|
||||
hint = (m_gridWidth - maxSize) / (8 * m_fontSize) - 1;
|
||||
if (hint > 2) {
|
||||
hint = 2;
|
||||
}
|
||||
}
|
||||
return hint;
|
||||
}
|
||||
|
||||
void DolphinIconsViewSettings::setConfigGroup(KConfig* config)
|
||||
{
|
||||
if (m_layoutMode == DolphinIconsView::Previews) {
|
||||
config->setGroup("Previews Mode");
|
||||
}
|
||||
else {
|
||||
config->setGroup("Icons Mode");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,126 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef DOLPHINICONSVIEWSETTINGS_H
|
||||
#define DOLPHINICONSVIEWSETTINGS_H
|
||||
|
||||
#include <qstring.h>
|
||||
#include <qiconview.h>
|
||||
#include <dolphinview.h>
|
||||
#include <dolphiniconsview.h>
|
||||
#include <dolphinsettingsbase.h>
|
||||
|
||||
/**
|
||||
* @brief Contains the settings for the icons view.
|
||||
*
|
||||
* The following properties are stored:
|
||||
* - layout mode (icons or previews)
|
||||
* - icon size
|
||||
* - preview size
|
||||
* - grid width, height and spacing
|
||||
* - arrangement (left to right or top to bottom)
|
||||
* - font family
|
||||
* - font size
|
||||
* - number of text lines
|
||||
*
|
||||
* @see DolphinIconsView
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DolphinIconsViewSettings : public DolphinSettingsBase
|
||||
{
|
||||
public:
|
||||
DolphinIconsViewSettings(DolphinIconsView::LayoutMode mode);
|
||||
virtual ~DolphinIconsViewSettings();
|
||||
|
||||
void setIconSize(int size);
|
||||
int iconSize() const { return m_iconSize; }
|
||||
|
||||
void setPreviewSize(int size);
|
||||
int previewSize() const { return m_previewSize; }
|
||||
|
||||
/**
|
||||
* Returns the width of the grid. For setting the width
|
||||
* DolphinIconsviewSettings::calculateGridSize() must be used.
|
||||
*/
|
||||
int gridWidth() const { return m_gridWidth; }
|
||||
|
||||
/**
|
||||
* Returns the height of the grid. For setting the height
|
||||
* DolphinIconsviewSettings::calculateGridSize() must be used.
|
||||
*/
|
||||
int gridHeight() const { return m_gridHeight; }
|
||||
|
||||
void setGridSpacing(int spacing);
|
||||
int gridSpacing() const { return m_gridSpacing; }
|
||||
|
||||
void setArrangement(QIconView::Arrangement arrangement) { m_arrangement = arrangement; }
|
||||
QIconView::Arrangement arrangement() const { return m_arrangement; }
|
||||
|
||||
void setFontFamily(const QString& family) { m_fontFamily = family; }
|
||||
const QString& fontFamily() const { return m_fontFamily; }
|
||||
|
||||
void setFontSize(int size) { m_fontSize = size; }
|
||||
int fontSize() const { return m_fontSize; }
|
||||
|
||||
void setTextlinesCount(int count) { m_textlinesCount = count; }
|
||||
int textlinesCount() const { return m_textlinesCount; }
|
||||
|
||||
/** @see DolphinSettingsBase::save */
|
||||
virtual void save();
|
||||
|
||||
/**
|
||||
* Calculates the width and the height of the grid dependant from \a hint and
|
||||
* the current settings. The hint gives information about the wanted text
|
||||
* width, where a lower value indicates a smaller text width. Currently
|
||||
* in Dolphin the values 0, 1 and 2 are used. See also
|
||||
* DolhinIconsViewSettings::textWidthHint.
|
||||
*
|
||||
* The calculation of the grid width and grid height is a little bit tricky,
|
||||
* as the user model does not fit to the implementation model of QIconView. The user model
|
||||
* allows to specify icon-, preview- and text width sizes, whereas the implementation
|
||||
* model expects only a grid width and height. The nasty thing is that the specified
|
||||
* width and height varies dependant from the arrangement (e. g. the height is totally
|
||||
* ignored for the top-to-bottom arrangement inside QIconView).
|
||||
*/
|
||||
void calculateGridSize(int hint);
|
||||
|
||||
/**
|
||||
* Returns the text width hint dependant from the given settings.
|
||||
* A lower value indicates a smaller text width. Currently
|
||||
* in Dolphin the values 0, 1 and 2 are used. The text width hint can
|
||||
* be used later for DolphinIconsViewSettings::calculateGridSize().
|
||||
*/
|
||||
int textWidthHint() const;
|
||||
|
||||
private:
|
||||
QIconView::Arrangement m_arrangement;
|
||||
DolphinIconsView::LayoutMode m_layoutMode;
|
||||
int m_iconSize;
|
||||
int m_previewSize;
|
||||
int m_gridWidth;
|
||||
int m_gridHeight;
|
||||
int m_gridSpacing;
|
||||
int m_fontSize;
|
||||
int m_textlinesCount;
|
||||
QString m_fontFamily;
|
||||
|
||||
void setConfigGroup(KConfig* config);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,142 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at), *
|
||||
* Cvetoslav Ludmiloff and Patrice Tremblay *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphinsettings.h"
|
||||
#include <qdir.h>
|
||||
|
||||
#include <kapplication.h>
|
||||
#include <kbookmark.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <kicontheme.h>
|
||||
#include <klocale.h>
|
||||
#include <kstandarddirs.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "dolphiniconsviewsettings.h"
|
||||
#include "dolphindetailsviewsettings.h"
|
||||
#include "sidebarssettings.h"
|
||||
|
||||
DolphinSettings& DolphinSettings::instance()
|
||||
{
|
||||
static DolphinSettings* instance = 0;
|
||||
if (instance == 0) {
|
||||
instance = new DolphinSettings();
|
||||
}
|
||||
return *instance;
|
||||
}
|
||||
|
||||
void DolphinSettings::setHomeURL(const KURL& url)
|
||||
{
|
||||
m_homeURL = url;
|
||||
// TODO: update home bookmark?
|
||||
}
|
||||
|
||||
DolphinSettings::DolphinSettings() :
|
||||
m_defaultMode(DolphinView::IconsView),
|
||||
m_isViewSplit(false),
|
||||
m_isURLEditable(false)
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("General");
|
||||
m_homeURL = KURL(config->readEntry("Home URL", QDir::homeDirPath()));
|
||||
m_defaultMode = static_cast<DolphinView::Mode>(config->readNumEntry("Default View Mode", DolphinView::IconsView));
|
||||
m_isViewSplit = config->readBoolEntry("Split View", false);
|
||||
m_isSaveView = config->readBoolEntry("Save View", false);
|
||||
m_isURLEditable = config->readBoolEntry("Editable URL", false);
|
||||
|
||||
m_iconsView = new DolphinIconsViewSettings(DolphinIconsView::Icons);
|
||||
m_previewsView = new DolphinIconsViewSettings(DolphinIconsView::Previews);
|
||||
m_detailsView = new DolphinDetailsViewSettings();
|
||||
m_leftsidebar = new leftSidebarSettings();
|
||||
m_rightsidebar = new rightSidebarSettings();
|
||||
}
|
||||
|
||||
DolphinSettings::~DolphinSettings()
|
||||
{
|
||||
delete m_iconsView;
|
||||
m_iconsView = 0;
|
||||
|
||||
delete m_previewsView;
|
||||
m_previewsView = 0;
|
||||
|
||||
delete m_detailsView;
|
||||
m_detailsView = 0;
|
||||
|
||||
delete m_leftsidebar;
|
||||
m_leftsidebar = 0;
|
||||
|
||||
delete m_rightsidebar;
|
||||
m_rightsidebar = 0;
|
||||
}
|
||||
|
||||
KBookmark DolphinSettings::bookmark(int index) const
|
||||
{
|
||||
int i = 0;
|
||||
KBookmarkGroup root = bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
while (!bookmark.isNull()) {
|
||||
if (i == index) {
|
||||
return bookmark;
|
||||
}
|
||||
++i;
|
||||
bookmark = root.next(bookmark);
|
||||
}
|
||||
|
||||
return KBookmark();
|
||||
}
|
||||
|
||||
DolphinIconsViewSettings* DolphinSettings::iconsView(DolphinIconsView::LayoutMode mode) const
|
||||
{
|
||||
return (mode == DolphinIconsView::Icons) ? m_iconsView : m_previewsView;
|
||||
}
|
||||
|
||||
KBookmarkManager* DolphinSettings::bookmarkManager() const
|
||||
{
|
||||
QString basePath = KGlobal::instance()->instanceName();
|
||||
basePath.append("/bookmarks.xml");
|
||||
const QString file = locateLocal("data", basePath);
|
||||
|
||||
return KBookmarkManager::managerForFile(file, false);
|
||||
}
|
||||
|
||||
void DolphinSettings::save()
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("General");
|
||||
config->writeEntry("Version", 1); // internal version
|
||||
config->writeEntry("Home URL", m_homeURL.prettyURL());
|
||||
config->writeEntry("Default View Mode", m_defaultMode);
|
||||
config->writeEntry("Split View", m_isViewSplit);
|
||||
config->writeEntry("Save View", m_isSaveView);
|
||||
config->writeEntry("Editable URL", m_isURLEditable);
|
||||
|
||||
m_iconsView->save();
|
||||
m_previewsView->save();
|
||||
m_detailsView->save();
|
||||
m_leftsidebar->save();
|
||||
m_rightsidebar->save();
|
||||
|
||||
QString basePath = KGlobal::instance()->instanceName();
|
||||
basePath.append("/bookmarks.xml");
|
||||
const QString file = locateLocal( "data", basePath);
|
||||
|
||||
KBookmarkManager* manager = KBookmarkManager::managerForFile(file, false);
|
||||
manager->save(false);
|
||||
}
|
@ -0,0 +1,110 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINSETTINGS_H
|
||||
#define DOLPHINSETTINGS_H
|
||||
|
||||
#include <qvaluelist.h>
|
||||
|
||||
#include <dolphiniconsview.h>
|
||||
#include <dolphinview.h>
|
||||
#include <dolphinsettingsbase.h>
|
||||
#include <kurl.h>
|
||||
|
||||
class KBookmark;
|
||||
class KBookmarkManager;
|
||||
class DolphinIconsViewSettings;
|
||||
class DolphinDetailsViewSettings;
|
||||
class leftSidebarSettings;
|
||||
class rightSidebarSettings;
|
||||
|
||||
/**
|
||||
* @brief Manages and stores all settings from Dolphin.
|
||||
*
|
||||
* The following properties are stored:
|
||||
* - home URL
|
||||
* - default view mode
|
||||
* - URL navigator state (editable or not)
|
||||
* - split view
|
||||
* - bookmarks
|
||||
* - properties for icons and details view
|
||||
*/
|
||||
class DolphinSettings : DolphinSettingsBase {
|
||||
public:
|
||||
static DolphinSettings& instance();
|
||||
|
||||
void setHomeURL(const KURL& url);
|
||||
const KURL& homeURL() const { return m_homeURL; }
|
||||
|
||||
void setDefaultViewMode(DolphinView::Mode mode) { m_defaultMode = mode; }
|
||||
DolphinView::Mode defaultViewMode() const { return m_defaultMode; }
|
||||
|
||||
void setURLEditable(bool editable) { m_isURLEditable = editable; }
|
||||
bool isURLEditable() const { return m_isURLEditable; }
|
||||
|
||||
void setViewSplit(bool split) { m_isViewSplit = split; }
|
||||
bool isViewSplit() const { return m_isViewSplit; }
|
||||
|
||||
void setSaveView(bool yes) { m_isSaveView = yes; }
|
||||
bool isSaveView() const { return m_isSaveView; }
|
||||
|
||||
|
||||
DolphinIconsViewSettings* iconsView(DolphinIconsView::LayoutMode mode) const;
|
||||
|
||||
DolphinDetailsViewSettings* detailsView() const { return m_detailsView; }
|
||||
|
||||
leftSidebarSettings* leftsidebar() const { return m_leftsidebar; }
|
||||
rightSidebarSettings* rightsidebar() const { return m_rightsidebar; }
|
||||
|
||||
KBookmarkManager* bookmarkManager() const;
|
||||
|
||||
// TODO: should this really belong here or get moved to a derived KBookmarkManager?
|
||||
// Dolphin uses some lists where an index is given and the corresponding bookmark
|
||||
// should get retrieved...
|
||||
KBookmark bookmark(int index) const;
|
||||
|
||||
/** @see DolphinSettingsBase::save */
|
||||
virtual void save();
|
||||
|
||||
protected:
|
||||
DolphinSettings();
|
||||
virtual ~DolphinSettings();
|
||||
|
||||
private:
|
||||
enum BookmarkHint {
|
||||
Home = 0,
|
||||
Media = 1,
|
||||
Network = 2,
|
||||
Root = 3
|
||||
};
|
||||
|
||||
DolphinView::Mode m_defaultMode;
|
||||
bool m_isViewSplit;
|
||||
bool m_isURLEditable;
|
||||
bool m_isSaveView;
|
||||
KURL m_homeURL;
|
||||
DolphinIconsViewSettings* m_iconsView;
|
||||
DolphinIconsViewSettings* m_previewsView;
|
||||
DolphinDetailsViewSettings* m_detailsView;
|
||||
leftSidebarSettings* m_leftsidebar;
|
||||
rightSidebarSettings* m_rightsidebar;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,31 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphinsettingsbase.h"
|
||||
|
||||
DolphinSettingsBase::DolphinSettingsBase()
|
||||
{
|
||||
}
|
||||
|
||||
DolphinSettingsBase::~DolphinSettingsBase()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,43 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef DOLPHINSETTINGSBASE_H
|
||||
#define DOLPHINSETTINGSBASE_H
|
||||
|
||||
/**
|
||||
* @brief Base class for all Dolphin settings.
|
||||
*
|
||||
* Derived classes must implement the method
|
||||
* DolphinSettingsBase::save().
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
// TODO: design this base class as Composite pattern,
|
||||
// as settings might contain other settings
|
||||
class DolphinSettingsBase
|
||||
{
|
||||
public:
|
||||
DolphinSettingsBase();
|
||||
|
||||
virtual ~DolphinSettingsBase();
|
||||
|
||||
virtual void save() = 0;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,77 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphinsettingsdialog.h"
|
||||
#include <klocale.h>
|
||||
#include <kiconloader.h>
|
||||
#include "generalsettingspage.h"
|
||||
#include "viewsettingspage.h"
|
||||
#include "bookmarkssettingspage.h"
|
||||
#include "dolphin.h"
|
||||
|
||||
DolphinSettingsDialog::DolphinSettingsDialog() :
|
||||
KDialogBase(IconList, i18n("D3lphin Preferences"),
|
||||
Ok|Apply|Cancel, Ok)
|
||||
{
|
||||
KIconLoader iconLoader;
|
||||
QFrame* generalSettingsFrame = addPage(i18n("General"), 0,
|
||||
iconLoader.loadIcon("exec",
|
||||
KIcon::NoGroup,
|
||||
KIcon::SizeMedium));
|
||||
m_generalSettingsPage = new GeneralSettingsPage(generalSettingsFrame);
|
||||
|
||||
QFrame* viewSettingsFrame = addPage(i18n("View Modes"), 0,
|
||||
iconLoader.loadIcon("view_choose",
|
||||
KIcon::NoGroup,
|
||||
KIcon::SizeMedium));
|
||||
m_viewSettingsPage = new ViewSettingsPage(viewSettingsFrame);
|
||||
|
||||
QFrame* bookmarksSettingsFrame = addPage(i18n("Bookmarks"), 0,
|
||||
iconLoader.loadIcon("bookmark",
|
||||
KIcon::NoGroup,
|
||||
KIcon::SizeMedium));
|
||||
m_bookmarksSettingsPage = new BookmarksSettingsPage(bookmarksSettingsFrame);
|
||||
}
|
||||
|
||||
DolphinSettingsDialog::~DolphinSettingsDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinSettingsDialog::slotOk()
|
||||
{
|
||||
applySettings();
|
||||
KDialogBase::slotOk();
|
||||
}
|
||||
|
||||
void DolphinSettingsDialog::slotApply()
|
||||
{
|
||||
applySettings();
|
||||
KDialogBase::slotApply();
|
||||
}
|
||||
|
||||
void DolphinSettingsDialog::applySettings()
|
||||
{
|
||||
m_generalSettingsPage->applySettings();
|
||||
m_viewSettingsPage->applySettings();
|
||||
m_bookmarksSettingsPage->applySettings();
|
||||
Dolphin::mainWin().refreshViews();
|
||||
}
|
||||
|
||||
#include "dolphinsettingsdialog.moc"
|
@ -0,0 +1,56 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINSETTINGSDIALOG_H
|
||||
#define DOLPHINSETTINGSDIALOG_H
|
||||
|
||||
#include <kdialogbase.h>
|
||||
class GeneralSettingsPage;
|
||||
class ViewSettingsPage;
|
||||
class BookmarksSettingsPage;
|
||||
|
||||
/**
|
||||
* @brief Settings dialog for Dolphin.
|
||||
*
|
||||
* Contains the pages for general settings, view settings and
|
||||
* bookmark settings.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DolphinSettingsDialog : public KDialogBase {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DolphinSettingsDialog();
|
||||
virtual ~DolphinSettingsDialog();
|
||||
|
||||
protected slots:
|
||||
virtual void slotOk();
|
||||
virtual void slotApply();
|
||||
|
||||
private:
|
||||
GeneralSettingsPage* m_generalSettingsPage;
|
||||
ViewSettingsPage* m_viewSettingsPage;
|
||||
BookmarksSettingsPage* m_bookmarksSettingsPage;
|
||||
|
||||
void applySettings();
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,166 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphinstatusbar.h"
|
||||
#include <kprogress.h>
|
||||
#include <qlabel.h>
|
||||
#include <qtimer.h>
|
||||
#include <kiconloader.h>
|
||||
|
||||
#include "dolphinview.h"
|
||||
#include "statusbarmessagelabel.h"
|
||||
#include "statusbarspaceinfo.h"
|
||||
|
||||
DolphinStatusBar::DolphinStatusBar(DolphinView* parent) :
|
||||
QHBox(parent),
|
||||
m_messageLabel(0),
|
||||
m_spaceInfo(0),
|
||||
m_progressBar(0),
|
||||
m_progress(100)
|
||||
{
|
||||
m_messageLabel = new StatusBarMessageLabel(this);
|
||||
m_messageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
|
||||
|
||||
m_spaceInfo = new StatusBarSpaceInfo(this);
|
||||
m_spaceInfo->setURL(parent->url());
|
||||
|
||||
m_progressText = new QLabel(this);
|
||||
m_progressText->hide();
|
||||
|
||||
m_progressBar = new KProgress(this);
|
||||
m_progressBar->hide();
|
||||
|
||||
m_progressTimer = new QTimer(this);
|
||||
connect(m_progressTimer, SIGNAL(timeout()),
|
||||
this, SLOT(slotProgressTimer()));
|
||||
|
||||
const QSize size(m_progressBar->sizeHint());
|
||||
m_progressBar->setMaximumWidth(size.width());
|
||||
setMinimumHeight(size.height());
|
||||
m_messageLabel->setMinimumTextHeight(size.height());
|
||||
|
||||
connect(parent, SIGNAL(signalURLChanged(const KURL&)),
|
||||
this, SLOT(slotURLChanged(const KURL&)));
|
||||
}
|
||||
|
||||
|
||||
DolphinStatusBar::~DolphinStatusBar()
|
||||
{
|
||||
}
|
||||
|
||||
void DolphinStatusBar::setMessage(const QString& msg,
|
||||
Type type)
|
||||
{
|
||||
m_messageLabel->setText(msg);
|
||||
if (msg.isEmpty() || (msg == m_defaultText)) {
|
||||
type = Default;
|
||||
}
|
||||
m_messageLabel->setType(type);
|
||||
|
||||
if ((type == Error) && (m_progress < 100)) {
|
||||
// If an error message is shown during a progress is ongoing,
|
||||
// the (never finishing) progress information should be hidden immediately
|
||||
// (invoking 'setProgress(100)' only leads to a delayed hiding).
|
||||
m_progressBar->hide();
|
||||
m_progressText->hide();
|
||||
setProgress(100);
|
||||
}
|
||||
}
|
||||
|
||||
DolphinStatusBar::Type DolphinStatusBar::type() const
|
||||
{
|
||||
return m_messageLabel->type();
|
||||
}
|
||||
|
||||
QString DolphinStatusBar::message() const
|
||||
{
|
||||
return m_messageLabel->text();
|
||||
}
|
||||
|
||||
void DolphinStatusBar::setProgressText(const QString& text)
|
||||
{
|
||||
m_progressText->setText(text);
|
||||
}
|
||||
|
||||
QString DolphinStatusBar::progressText() const
|
||||
{
|
||||
return m_progressText->text();
|
||||
}
|
||||
|
||||
void DolphinStatusBar::setProgress(int percent)
|
||||
{
|
||||
if (percent < 0) {
|
||||
percent = 0;
|
||||
}
|
||||
else if (percent > 100) {
|
||||
percent = 100;
|
||||
}
|
||||
|
||||
m_progress = percent;
|
||||
m_progressBar->setProgress(m_progress);
|
||||
m_progressTimer->start(300, true);
|
||||
|
||||
const QString msg(m_messageLabel->text());
|
||||
if (msg.isEmpty() || (msg == m_defaultText)) {
|
||||
if (percent == 0) {
|
||||
m_messageLabel->setText(QString::null);
|
||||
m_messageLabel->setType(Default);
|
||||
}
|
||||
else if (percent == 100) {
|
||||
m_messageLabel->setText(m_defaultText);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinStatusBar::clear()
|
||||
{
|
||||
// TODO: check for timeout, so that it's prevented that
|
||||
// a message is cleared too early.
|
||||
m_messageLabel->setText(m_defaultText);
|
||||
m_messageLabel->setType(Default);
|
||||
}
|
||||
|
||||
void DolphinStatusBar::setDefaultText(const QString& text)
|
||||
{
|
||||
m_defaultText = text;
|
||||
}
|
||||
|
||||
void DolphinStatusBar::slotProgressTimer()
|
||||
{
|
||||
if (m_progress < 100) {
|
||||
// progress should be shown
|
||||
m_progressBar->show();
|
||||
m_progressText->show();
|
||||
m_spaceInfo->hide();
|
||||
}
|
||||
else {
|
||||
// progress should not be shown anymore
|
||||
m_progressBar->hide();
|
||||
m_progressText->hide();
|
||||
m_spaceInfo->show();
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinStatusBar::slotURLChanged(const KURL& url)
|
||||
{
|
||||
m_spaceInfo->setURL(url);
|
||||
}
|
||||
|
||||
#include "dolphinstatusbar.moc"
|
@ -0,0 +1,133 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef DOLPHINSTATUSBAR_H
|
||||
#define DOLPHINSTATUSBAR_H
|
||||
|
||||
#include <qhbox.h>
|
||||
class KProgress;
|
||||
class QLabel;
|
||||
class QTimer;
|
||||
class StatusBarMessageLabel;
|
||||
class StatusBarSpaceInfo;
|
||||
class DolphinView;
|
||||
class KURL;
|
||||
|
||||
/**
|
||||
* @brief Represents the statusbar of a Dolphin view.
|
||||
*
|
||||
* The statusbar allows to show messages and progress
|
||||
* information.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class DolphinStatusBar : public QHBox {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* Describes the type of the message text. Dependent
|
||||
* from the type a corresponding icon and color is
|
||||
* used for the message text.
|
||||
*/
|
||||
enum Type {
|
||||
Default,
|
||||
OperationCompleted,
|
||||
Information,
|
||||
Error
|
||||
};
|
||||
|
||||
DolphinStatusBar(DolphinView* parent = 0);
|
||||
virtual ~DolphinStatusBar();
|
||||
|
||||
/**
|
||||
* Sets the message text to \a msg. Dependant
|
||||
* from the given type \a type an icon is shown and
|
||||
* the color of the text is adjusted. The height of
|
||||
* the statusbar is automatically adjusted in a way,
|
||||
* that the full text fits into the available width.
|
||||
*
|
||||
* If a progress is ongoing and a message
|
||||
* with the type Type::Error is set, the progress
|
||||
* is cleared automatically.
|
||||
*/
|
||||
void setMessage(const QString& msg, Type type);
|
||||
|
||||
QString message() const;
|
||||
Type type() const;
|
||||
|
||||
/**
|
||||
* Sets the text for the progress information.
|
||||
* The text is shown with a delay of 300 milliseconds:
|
||||
* if the progress set by DolphinStatusBar::setProgress()
|
||||
* does reach 100 % within 300 milliseconds,
|
||||
* the progress text is not shown at all. This assures that
|
||||
* no flickering occurs for showing a progress of fast
|
||||
* operations.
|
||||
*/
|
||||
void setProgressText(const QString& text);
|
||||
QString progressText() const;
|
||||
|
||||
/**
|
||||
* Sets the progress in percent (0 - 100). The
|
||||
* progress is shown with a delay of 300 milliseconds:
|
||||
* if the progress does reach 100 % within 300 milliseconds,
|
||||
* the progress is not shown at all. This assures that
|
||||
* no flickering occurs for showing a progress of fast
|
||||
* operations.
|
||||
*/
|
||||
void setProgress(int percent);
|
||||
int progress() const { return m_progress; }
|
||||
|
||||
/**
|
||||
* Clears the message text of the status bar by replacing
|
||||
* the message with the default text, which can be set
|
||||
* by DolphinStatusBar::setDefaultText(). The progress
|
||||
* information is not cleared.
|
||||
*/
|
||||
void clear();
|
||||
|
||||
/**
|
||||
* Sets the default text, which is shown if the status bar
|
||||
* is cleared by DolphinStatusBar::clear().
|
||||
*/
|
||||
void setDefaultText(const QString& text);
|
||||
const QString& defaultText() const { return m_defaultText; }
|
||||
|
||||
private slots:
|
||||
void slotProgressTimer();
|
||||
|
||||
/**
|
||||
* Is invoked, when the URL of the DolphinView, where the
|
||||
* statusbar belongs too, has been changed.
|
||||
*/
|
||||
void slotURLChanged(const KURL& url);
|
||||
|
||||
private:
|
||||
StatusBarMessageLabel* m_messageLabel;
|
||||
StatusBarSpaceInfo* m_spaceInfo;
|
||||
QLabel* m_progressText;
|
||||
KProgress* m_progressBar;
|
||||
QTimer* m_progressTimer;
|
||||
int m_progress;
|
||||
QString m_defaultText;
|
||||
};
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,452 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* Copyright (C) 2006 by Gregor Kališnik <gregor@podnapisi.net> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef _DOLPHINVIEW_H_
|
||||
#define _DOLPHINVIEW_H_
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <kparts/part.h>
|
||||
#include <kfileitem.h>
|
||||
#include <kfileiconview.h>
|
||||
#include <kio/job.h>
|
||||
#include <urlnavigator.h>
|
||||
|
||||
class QPainter;
|
||||
class KURL;
|
||||
class QLineEdit;
|
||||
class URLNavigator;
|
||||
class QTimer;
|
||||
class QIconViewItem;
|
||||
class QListViewItem;
|
||||
class QVBoxLayout;
|
||||
class KFileView;
|
||||
class Dolphin;
|
||||
class DolphinDirLister;
|
||||
class DolphinStatusBar;
|
||||
class DolphinIconsView;
|
||||
class DolphinDetailsView;
|
||||
class ViewProperties;
|
||||
class QScrollView;
|
||||
class KProgress;
|
||||
class ItemEffectsManager;
|
||||
class FilterBar;
|
||||
/**
|
||||
* @short Represents a view for the directory content
|
||||
* including the navigation bar and status bar.
|
||||
*
|
||||
* View modes for icons, details and previews are supported. Currently
|
||||
* Dolphin allows to have up to two views inside the main window.
|
||||
*
|
||||
* @see DolphinIconsView
|
||||
* @see DolphinDetailsView
|
||||
* @see URLNavigator
|
||||
* @see DolphinStatusBar
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DolphinView : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* Defines the view mode for a directory. The view mode
|
||||
* can be defined when constructing a DolphinView. The
|
||||
* view mode is automatically updated if the directory itself
|
||||
* defines a view mode (see class ViewProperties for details).
|
||||
*/
|
||||
enum Mode
|
||||
{
|
||||
/**
|
||||
* The directory items are shown as icons including an
|
||||
* icon name. */
|
||||
IconsView = 0,
|
||||
|
||||
/**
|
||||
* The icon, the name and at least the size of the directory
|
||||
* items are shown in a table. It is possible to add columns
|
||||
* for date, group and permissions.
|
||||
*/
|
||||
DetailsView = 1,
|
||||
|
||||
/**
|
||||
* The directory items are shown as preview if possible. As
|
||||
* fallback the items are shown as icons.
|
||||
*/
|
||||
PreviewsView = 2
|
||||
};
|
||||
|
||||
/** Defines the sort order for the items of a directory. */
|
||||
enum Sorting
|
||||
{
|
||||
SortByName = 0,
|
||||
SortBySize = 1,
|
||||
SortByDate = 2
|
||||
};
|
||||
|
||||
DolphinView(QWidget* parent,
|
||||
const KURL& url,
|
||||
Mode mode = IconsView,
|
||||
bool showHiddenFiles = false);
|
||||
|
||||
virtual ~DolphinView();
|
||||
|
||||
/**
|
||||
* Sets the current active URL.
|
||||
* The signals URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void setURL(const KURL& url);
|
||||
|
||||
/** Returns the current active URL. */
|
||||
const KURL& url() const;
|
||||
|
||||
void requestActivation();
|
||||
bool isActive() const;
|
||||
|
||||
void setMode(Mode mode);
|
||||
Mode mode() const;
|
||||
void setShowHiddenFilesEnabled(bool show);
|
||||
bool isShowHiddenFilesEnabled() const;
|
||||
|
||||
void setViewProperties(const ViewProperties& props);
|
||||
|
||||
/**
|
||||
* Triggers the renaming of the currently selected items, where
|
||||
* the user must input a new name for the items.
|
||||
*/
|
||||
void renameSelectedItems();
|
||||
|
||||
/**
|
||||
* Selects all items.
|
||||
* @see DolphinView::selectedItems()
|
||||
*/
|
||||
void selectAll();
|
||||
|
||||
/**
|
||||
* Inverts the current selection: selected items get unselected,
|
||||
* unselected items get selected.
|
||||
* @see DolphinView::selectedItems()
|
||||
*/
|
||||
void invertSelection();
|
||||
|
||||
/**
|
||||
* Goes back one step in the URL history. The signals
|
||||
* URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void goBack();
|
||||
|
||||
/**
|
||||
* Goes forward one step in the URL history. The signals
|
||||
* URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void goForward();
|
||||
|
||||
/**
|
||||
* Goes up one step of the URL path. The signals
|
||||
* URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void goUp();
|
||||
|
||||
/**
|
||||
* Goes to the home URL. The signals URLNavigator::urlChanged
|
||||
* and URLNavigator::historyChanged are submitted.
|
||||
*/
|
||||
void goHome();
|
||||
|
||||
/**
|
||||
* Sets the URL of the navigation bar to an editable state
|
||||
* if \a editable is true. If \a editable is false, each part of
|
||||
* the location is presented by a button for a fast navigation.
|
||||
*/
|
||||
void setURLEditable(bool editable);
|
||||
|
||||
/**
|
||||
* Allows to edit the URL of the navigation bar and assures that
|
||||
* the focus is assigned to the URL editor.
|
||||
*/
|
||||
void editURL();
|
||||
|
||||
/**
|
||||
* Returns the complete URL history. The index 0 indicates the oldest
|
||||
* history element.
|
||||
* @param index Output parameter which indicates the current
|
||||
* index of the location.
|
||||
*/
|
||||
const QValueList<URLNavigator::HistoryElem> urlHistory(int& index) const;
|
||||
|
||||
/**
|
||||
* Returns true, if at least one item is selected.
|
||||
*/
|
||||
bool hasSelection() const;
|
||||
|
||||
/**
|
||||
* Returns the selected items. 0 is returned, if no item
|
||||
* is selected.
|
||||
* @see DolphinView::selectedURLs()
|
||||
*/
|
||||
const KFileItemList* selectedItems() const;
|
||||
|
||||
/**
|
||||
* Returns a list of URLs for all selected items. An empty list
|
||||
* is returned, if no item is selected.
|
||||
* @see DolphinView::selectedItems()
|
||||
*/
|
||||
KURL::List selectedURLs() const;
|
||||
|
||||
/**
|
||||
* Returns the current item, where the cursor is. 0 is returned, if there is no
|
||||
* current item (e. g. if the view is empty). Note that the current item must
|
||||
* not be a selected item.
|
||||
* @see DolphinView::selectedItems()
|
||||
*/
|
||||
const KFileItem* currentFileItem() const;
|
||||
|
||||
/**
|
||||
* Opens the context menu for the item indicated by \a fileInfo
|
||||
* on the position \a pos. If 0 is passed for the file info, a context
|
||||
* menu for the viewport is opened.
|
||||
*/
|
||||
void openContextMenu(KFileItem* fileInfo, const QPoint& pos);
|
||||
|
||||
/**
|
||||
* Renames the filename of the source URL by the new file name.
|
||||
* If the new file name already exists, a dialog is opened which
|
||||
* asks the user to enter a new name.
|
||||
*/
|
||||
void rename(const KURL& source, const QString& newName);
|
||||
|
||||
/** Returns the status bar of the view. */
|
||||
DolphinStatusBar* statusBar() const;
|
||||
|
||||
/**
|
||||
* Returns the x-position of the view content.
|
||||
* The content of the view might be larger than the visible area
|
||||
* and hence a scrolling must be done.
|
||||
*/
|
||||
int contentsX() const;
|
||||
|
||||
/**
|
||||
* Returns the y-position of the view content.
|
||||
* The content of the view might be larger than the visible area
|
||||
* and hence a scrolling must be done.
|
||||
*/
|
||||
int contentsY() const;
|
||||
|
||||
/**
|
||||
* Returns true, if the URL shown by the navigation bar is editable.
|
||||
* @see URLNavigator
|
||||
*/
|
||||
bool isURLEditable() const;
|
||||
|
||||
/** Increases the size of the current set view mode. */
|
||||
void zoomIn();
|
||||
|
||||
/** Decreases the size of the current set view mode. */
|
||||
void zoomOut();
|
||||
|
||||
/**
|
||||
* Returns true, if zooming in is possible. If false is returned,
|
||||
* the minimal zoom size is possible.
|
||||
*/
|
||||
bool isZoomInPossible() const;
|
||||
|
||||
/**
|
||||
* Returns true, if zooming out is possible. If false is returned,
|
||||
* the maximum zoom size is possible.
|
||||
*/
|
||||
bool isZoomOutPossible() const;
|
||||
|
||||
/** Sets the sort order of the items inside a directory (see DolphinView::Sorting). */
|
||||
void setSorting(Sorting sorting);
|
||||
|
||||
/** Returns the sort order of the items inside a directory (see DolphinView::Sorting). */
|
||||
Sorting sorting() const;
|
||||
|
||||
/** Sets the sort order (Qt::Ascending or Qt::Descending) for the items. */
|
||||
void setSortOrder(Qt::SortOrder order);
|
||||
|
||||
/** Returns the current used sort order (Qt::Ascending or Qt::Descending). */
|
||||
Qt::SortOrder sortOrder() const;
|
||||
|
||||
/** Refreshs the view settings by reading out the stored settings. */
|
||||
void refreshSettings();
|
||||
|
||||
/**
|
||||
* Updates the number of items (= number of files + number of
|
||||
* directories) in the statusbar. If files are selected, the number
|
||||
* of selected files and the sum of the filesize is shown.
|
||||
*/
|
||||
void updateStatusBar();
|
||||
|
||||
/** Returns the URLNavigator of the view for read access. */
|
||||
const URLNavigator* urlNavigator() const { return m_urlNavigator; }
|
||||
|
||||
/**
|
||||
* Triggers to request user information for the item given
|
||||
* by the URL \a url. The signal signalRequestItemInfo is emitted,
|
||||
* which provides a way for widgets to get an indication to update
|
||||
* the item information.
|
||||
*/
|
||||
void requestItemInfo(const KURL& url);
|
||||
|
||||
/**
|
||||
* Checks if the filter bar is visible.
|
||||
*
|
||||
* @return @c true Filter bar is visible.
|
||||
* @return @c false Filter bar is not visible.
|
||||
*/
|
||||
bool isFilterBarVisible() const;
|
||||
|
||||
public slots:
|
||||
void reload();
|
||||
void slotURLListDropped(QDropEvent* event,
|
||||
const KURL::List& urls,
|
||||
const KURL& url);
|
||||
|
||||
/**
|
||||
* Slot that popups the filter bar like FireFox popups his Search bar.
|
||||
*/
|
||||
void slotShowFilterBar(bool show);
|
||||
|
||||
signals:
|
||||
/** Is emitted if URL of the view has been changed to \a url. */
|
||||
void signalURLChanged(const KURL& url);
|
||||
|
||||
/**
|
||||
* Is emitted if the view mode (IconsView, DetailsView,
|
||||
* PreviewsView) has been changed.
|
||||
*/
|
||||
void signalModeChanged();
|
||||
|
||||
/** Is emitted if the 'show hidden files' property has been changed. */
|
||||
void signalShowHiddenFilesChanged();
|
||||
|
||||
/** Is emitted if the sorting by name, size or date has been changed. */
|
||||
void signalSortingChanged(DolphinView::Sorting sorting);
|
||||
|
||||
/** Is emitted if the sort order (ascending or descending) has been changed. */
|
||||
void signalSortOrderChanged(Qt::SortOrder order);
|
||||
|
||||
/**
|
||||
* Is emitted if information of an item is requested to be shown e. g. in the sidebar.
|
||||
* It the URL is empty, no item information request is pending.
|
||||
*/
|
||||
void signalRequestItemInfo(const KURL& url);
|
||||
|
||||
/** Is emitted if the contents has been moved to \a x, \a y. */
|
||||
void contentsMoved(int x, int y);
|
||||
|
||||
/**
|
||||
* Is emitted whenever the selection has been changed. The current selection can
|
||||
* be retrieved by Dolphin::mainWin().activeView()->selectedItems() or by
|
||||
* Dolphin::mainWin().activeView()->selectedURLs().
|
||||
*/
|
||||
void signalSelectionChanged();
|
||||
|
||||
protected:
|
||||
/** @see QWidget::mouseReleaseEvent */
|
||||
virtual void mouseReleaseEvent(QMouseEvent* event);
|
||||
|
||||
private slots:
|
||||
void slotURLChanged(const KURL& kurl);
|
||||
void triggerIconsViewItem(QIconViewItem *item);
|
||||
void triggerDetailsViewItem(QListViewItem* item,
|
||||
const QPoint& pos,
|
||||
int column);
|
||||
void triggerDetailsViewItem(QListViewItem* item);
|
||||
void updateURL();
|
||||
|
||||
void slotPercent(int percent);
|
||||
void slotClear();
|
||||
void slotDeleteItem(KFileItem* item);
|
||||
void slotCompleted();
|
||||
void slotDelayedUpdate();
|
||||
void slotInfoMessage(const QString& msg);
|
||||
void slotErrorMessage(const QString& msg);
|
||||
void slotRefreshItems(const KFileItemList& list);
|
||||
void slotAddItems(const KFileItemList& list);
|
||||
|
||||
void slotGrabActivation();
|
||||
|
||||
/**
|
||||
* Is invoked shortly before the contents of a view implementation
|
||||
* has been moved and emits the signal contentsMoved. Note that no
|
||||
* signal is emitted when the contents moving is only temporary by
|
||||
* e. g. reloading a directory.
|
||||
*/
|
||||
void slotContentsMoving(int x, int y);
|
||||
|
||||
/**
|
||||
* Filters the currently shown items by \a nameFilter. All items
|
||||
* which contain the given filter string will be shown.
|
||||
*/
|
||||
void slotChangeNameFilter(const QString& nameFilter);
|
||||
|
||||
private:
|
||||
void createView();
|
||||
KFileView* fileView() const;
|
||||
QScrollView* scrollView() const;
|
||||
ItemEffectsManager* itemEffectsManager() const;
|
||||
void startDirLister(const KURL& url, bool reload = false);
|
||||
|
||||
/**
|
||||
* Returns the default text of the status bar, if no item is
|
||||
* selected.
|
||||
*/
|
||||
QString defaultStatusBarText() const;
|
||||
|
||||
/**
|
||||
* Returns the text for the status bar, if at least one item
|
||||
* is selected.
|
||||
*/
|
||||
QString selectionStatusBarText() const;
|
||||
|
||||
/**
|
||||
* Returns the string representation for the index \a index
|
||||
* for renaming \itemCount items.
|
||||
*/
|
||||
QString renameIndexPresentation(int index, int itemCount) const;
|
||||
|
||||
bool m_refreshing;
|
||||
bool m_showProgress;
|
||||
Mode m_mode;
|
||||
|
||||
QVBoxLayout* m_topLayout;
|
||||
URLNavigator* m_urlNavigator;
|
||||
|
||||
DolphinIconsView* m_iconsView;
|
||||
DolphinDetailsView* m_detailsView;
|
||||
DolphinStatusBar* m_statusBar;
|
||||
|
||||
int m_iconSize;
|
||||
int m_folderCount;
|
||||
int m_fileCount;
|
||||
|
||||
DolphinDirLister* m_dirLister;
|
||||
|
||||
FilterBar *m_filterBar;
|
||||
};
|
||||
|
||||
#endif // _DOLPHINVIEW_H_
|
@ -0,0 +1,120 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "editbookmarkdialog.h"
|
||||
#include <qgrid.h>
|
||||
#include <klocale.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlayout.h>
|
||||
#include <kiconloader.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <kurl.h>
|
||||
#include <kfiledialog.h>
|
||||
#include <kicondialog.h>
|
||||
#include <qhbox.h>
|
||||
|
||||
EditBookmarkDialog::~EditBookmarkDialog()
|
||||
{
|
||||
}
|
||||
|
||||
KBookmark EditBookmarkDialog::getBookmark(const QString& title,
|
||||
const QString& name,
|
||||
const KURL& url,
|
||||
const QString& icon)
|
||||
{
|
||||
EditBookmarkDialog dialog(title, name, url, icon);
|
||||
dialog.exec();
|
||||
return dialog.m_bookmark;
|
||||
}
|
||||
|
||||
void EditBookmarkDialog::slotOk()
|
||||
{
|
||||
m_bookmark = KBookmark::standaloneBookmark(m_name->text(),
|
||||
KURL(m_location->text()),
|
||||
m_iconName);
|
||||
|
||||
KDialogBase::slotOk();
|
||||
}
|
||||
|
||||
EditBookmarkDialog::EditBookmarkDialog(const QString& title,
|
||||
const QString& name,
|
||||
const KURL& url,
|
||||
const QString& icon) :
|
||||
KDialogBase(Plain, title, Ok|Cancel, Ok),
|
||||
m_iconButton(0),
|
||||
m_name(0),
|
||||
m_location(0)
|
||||
{
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(plainPage(), 0, spacingHint());
|
||||
|
||||
QGrid* grid = new QGrid(2, Qt::Horizontal, plainPage());
|
||||
grid->setSpacing(spacingHint());
|
||||
|
||||
// create icon widgets
|
||||
new QLabel(i18n("Icon:"), grid);
|
||||
m_iconName = icon;
|
||||
m_iconButton = new QPushButton(SmallIcon(m_iconName), QString::null, grid);
|
||||
m_iconButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
connect(m_iconButton, SIGNAL(clicked()),
|
||||
this, SLOT(selectIcon()));
|
||||
|
||||
// create name widgets
|
||||
new QLabel(i18n("Name:"), grid);
|
||||
m_name = new QLineEdit(name, grid);
|
||||
m_name->selectAll();
|
||||
m_name->setFocus();
|
||||
|
||||
// create location widgets
|
||||
new QLabel(i18n("Location:"), grid);
|
||||
|
||||
QHBox* locationBox = new QHBox(grid);
|
||||
locationBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
locationBox->setSpacing(spacingHint());
|
||||
m_location = new QLineEdit(url.prettyURL(), locationBox);
|
||||
m_location->setMinimumWidth(320);
|
||||
|
||||
QPushButton* selectLocationButton = new QPushButton(SmallIcon("folder"), QString::null, locationBox);
|
||||
selectLocationButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
connect(selectLocationButton, SIGNAL(clicked()),
|
||||
this, SLOT(selectLocation()));
|
||||
|
||||
topLayout->addWidget(grid);
|
||||
}
|
||||
|
||||
void EditBookmarkDialog::selectIcon()
|
||||
{
|
||||
const QString iconName(KIconDialog::getIcon(KIcon::Small, KIcon::FileSystem));
|
||||
if (!iconName.isEmpty()) {
|
||||
m_iconName = iconName;
|
||||
m_iconButton->setIconSet(SmallIcon(iconName));
|
||||
}
|
||||
}
|
||||
|
||||
void EditBookmarkDialog::selectLocation()
|
||||
{
|
||||
const QString location(m_location->text());
|
||||
KURL url(KFileDialog::getExistingURL(location));
|
||||
if (!url.isEmpty()) {
|
||||
m_location->setText(url.prettyURL());
|
||||
}
|
||||
}
|
||||
|
||||
#include "editbookmarkdialog.moc"
|
@ -0,0 +1,82 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef EDITBOOKMARKDIALOG_H
|
||||
#define EDITBOOKMARKDIALOG_H
|
||||
|
||||
#include <kbookmark.h>
|
||||
#include <kdialogbase.h>
|
||||
|
||||
class Bookmark;
|
||||
class QLineEdit;
|
||||
class QPushButton;
|
||||
|
||||
/**
|
||||
* @brief Allows to edit the icon, URL and name of a bookmark.
|
||||
*
|
||||
* The default usage is like this:
|
||||
* \code
|
||||
* KBookmark bookmark = EditBookmarkDialog::getBookmark(i18n("Add Bookmark"),
|
||||
* i18n("New bookmark"),
|
||||
* KURL(),
|
||||
* "bookmark");
|
||||
* if (!bookmark.isNull()) {
|
||||
* // ...
|
||||
* }
|
||||
* \endcode
|
||||
*/
|
||||
class EditBookmarkDialog : public KDialogBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
virtual ~EditBookmarkDialog();
|
||||
|
||||
/**
|
||||
* Opens a dialog where the current icon, URL and name of
|
||||
* an URL are editable. The title of the dialog is set to \a title.
|
||||
* @return A valid bookmark, if the user has pressed OK. Otherwise
|
||||
* a null bookmark is returned (see Bookmark::isNull()).
|
||||
*/
|
||||
static KBookmark getBookmark(const QString& title,
|
||||
const QString& name,
|
||||
const KURL& url,
|
||||
const QString& icon);
|
||||
|
||||
protected slots:
|
||||
virtual void slotOk();
|
||||
|
||||
protected:
|
||||
EditBookmarkDialog(const QString& title,
|
||||
const QString& name,
|
||||
const KURL& url,
|
||||
const QString& icon);
|
||||
|
||||
private slots:
|
||||
void selectIcon();
|
||||
void selectLocation();
|
||||
|
||||
private:
|
||||
QString m_iconName;
|
||||
QPushButton* m_iconButton;
|
||||
QLineEdit* m_name;
|
||||
QLineEdit* m_location;
|
||||
KBookmark m_bookmark;
|
||||
};
|
||||
#endif
|
@ -0,0 +1,90 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* Copyright (C) 2006 by Gregor Kališnik <gregor@podnapisi.net> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#include "filterbar.h"
|
||||
|
||||
#include <qlabel.h>
|
||||
#include <qlayout.h>
|
||||
|
||||
#include <kdialog.h>
|
||||
#include <klocale.h>
|
||||
#include <kpushbutton.h>
|
||||
#include <klineedit.h>
|
||||
#include <kiconloader.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
FilterBar::FilterBar(QWidget *parent, const char *name) :
|
||||
QWidget(parent, name)
|
||||
{
|
||||
const int gap = 3;
|
||||
|
||||
QVBoxLayout* foo = new QVBoxLayout(this);
|
||||
foo->addSpacing(gap);
|
||||
|
||||
QHBoxLayout* layout = new QHBoxLayout(foo);
|
||||
layout->addSpacing(gap);
|
||||
|
||||
m_filter = new QLabel(i18n("Filter:"), this);
|
||||
layout->addWidget(m_filter);
|
||||
layout->addSpacing(KDialog::spacingHint());
|
||||
|
||||
m_filterInput = new KLineEdit(this);
|
||||
layout->addWidget(m_filterInput);
|
||||
|
||||
m_close = new KPushButton(this);
|
||||
m_close->setIconSet(SmallIcon("fileclose"));
|
||||
m_close->setFlat(true);
|
||||
layout->addWidget(m_close);
|
||||
layout->addSpacing(gap);
|
||||
|
||||
connect(m_filterInput, SIGNAL(textChanged(const QString&)),
|
||||
this, SIGNAL(signalFilterChanged(const QString&)));
|
||||
connect(m_close, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
connect(m_close, SIGNAL(clicked()),
|
||||
&Dolphin::mainWin(), SLOT(slotShowFilterBarChanged()));
|
||||
}
|
||||
|
||||
FilterBar::~FilterBar()
|
||||
{
|
||||
}
|
||||
|
||||
void FilterBar::hide()
|
||||
{
|
||||
m_filterInput->clear();
|
||||
m_filterInput->clearFocus();
|
||||
QWidget::hide();
|
||||
}
|
||||
|
||||
void FilterBar::show()
|
||||
{
|
||||
m_filterInput->setFocus();
|
||||
QWidget::show();
|
||||
}
|
||||
|
||||
void FilterBar::keyReleaseEvent(QKeyEvent* event)
|
||||
{
|
||||
QWidget::keyReleaseEvent(event);
|
||||
if ((event->key() == Qt::Key_Escape)) {
|
||||
hide();
|
||||
Dolphin::mainWin().slotShowFilterBarChanged();
|
||||
}
|
||||
}
|
||||
|
||||
#include "filterbar.moc"
|
@ -0,0 +1,65 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* Copyright (C) 2006 by Gregor Kališnik <gregor@podnapisi.net> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef FILTERBAR_H
|
||||
#define FILTERBAR_H
|
||||
|
||||
#include <qwidget.h>
|
||||
|
||||
class QLabel;
|
||||
class KLineEdit;
|
||||
class KPushButton;
|
||||
|
||||
/**
|
||||
* @brief Provides an input field for filtering the currently shown items.
|
||||
*
|
||||
* @author Gregor Kališnik <gregor@podnapisi.net>
|
||||
*/
|
||||
class FilterBar : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
FilterBar(QWidget *parent = 0, const char *name = 0);
|
||||
virtual ~FilterBar();
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Signal that reports the name filter has been
|
||||
* changed to \a nameFilter.
|
||||
*/
|
||||
void signalFilterChanged(const QString& nameFilter);
|
||||
|
||||
public slots:
|
||||
/** @see QWidget::hide() */
|
||||
virtual void hide();
|
||||
|
||||
/** @see QWidget::show() */
|
||||
virtual void show();
|
||||
|
||||
protected:
|
||||
virtual void keyReleaseEvent(QKeyEvent* event);
|
||||
|
||||
private:
|
||||
QLabel* m_filter;
|
||||
KLineEdit* m_filterInput;
|
||||
KPushButton* m_close;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,171 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and *
|
||||
* and Patrice Tremblay *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "generalsettingspage.h"
|
||||
|
||||
#include <qlayout.h>
|
||||
#include <kdialog.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qvbox.h>
|
||||
#include <qgrid.h>
|
||||
#include <qgroupbox.h>
|
||||
#include <klocale.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qbuttongroup.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <kfiledialog.h>
|
||||
#include <qradiobutton.h>
|
||||
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphin.h"
|
||||
#include "dolphinview.h"
|
||||
|
||||
GeneralSettingsPage::GeneralSettingsPage(QWidget* parent) :
|
||||
SettingsPageBase(parent),
|
||||
m_homeURL(0),
|
||||
m_startSplit(0),
|
||||
m_startEditable(0)
|
||||
{
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(parent, 2, KDialog::spacingHint());
|
||||
|
||||
const int spacing = KDialog::spacingHint();
|
||||
const int margin = KDialog::marginHint();
|
||||
const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
DolphinSettings& settings = DolphinSettings::instance();
|
||||
|
||||
QVBox* vBox = new QVBox(parent);
|
||||
vBox->setSizePolicy(sizePolicy);
|
||||
vBox->setSpacing(spacing);
|
||||
vBox->setMargin(margin);
|
||||
vBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored);
|
||||
|
||||
// create 'Home URL' editor
|
||||
QGroupBox* homeGroup = new QGroupBox(1, Qt::Horizontal, i18n("Home URL"), vBox);
|
||||
homeGroup->setSizePolicy(sizePolicy);
|
||||
homeGroup->setMargin(margin);
|
||||
|
||||
QHBox* homeURLBox = new QHBox(homeGroup);
|
||||
homeURLBox->setSizePolicy(sizePolicy);
|
||||
homeURLBox->setSpacing(spacing);
|
||||
|
||||
new QLabel(i18n("Location:"), homeURLBox);
|
||||
m_homeURL = new QLineEdit(settings.homeURL().prettyURL(), homeURLBox);
|
||||
|
||||
QPushButton* selectHomeURLButton = new QPushButton(SmallIcon("folder"), QString::null, homeURLBox);
|
||||
connect(selectHomeURLButton, SIGNAL(clicked()),
|
||||
this, SLOT(selectHomeURL()));
|
||||
|
||||
QHBox* buttonBox = new QHBox(homeGroup);
|
||||
buttonBox->setSizePolicy(sizePolicy);
|
||||
buttonBox->setSpacing(spacing);
|
||||
QPushButton* useCurrentButton = new QPushButton(i18n("Use current location"), buttonBox);
|
||||
connect(useCurrentButton, SIGNAL(clicked()),
|
||||
this, SLOT(useCurrentLocation()));
|
||||
QPushButton* useDefaultButton = new QPushButton(i18n("Use default location"), buttonBox);
|
||||
connect(useDefaultButton, SIGNAL(clicked()),
|
||||
this, SLOT(useDefaulLocation()));
|
||||
|
||||
// create 'Default View Mode' group
|
||||
QButtonGroup* buttonGroup = new QButtonGroup(3, Qt::Vertical, i18n("Default View Mode"), vBox);
|
||||
buttonGroup->setSizePolicy(sizePolicy);
|
||||
buttonGroup->setMargin(margin);
|
||||
|
||||
m_iconsView = new QRadioButton(i18n("Icons"), buttonGroup);
|
||||
m_detailsView = new QRadioButton(i18n("Details"), buttonGroup);
|
||||
m_previewsView = new QRadioButton(i18n("Previews"), buttonGroup);
|
||||
|
||||
switch (settings.defaultViewMode()) {
|
||||
case DolphinView::IconsView: m_iconsView->setChecked(true); break;
|
||||
case DolphinView::DetailsView: m_detailsView->setChecked(true); break;
|
||||
case DolphinView::PreviewsView: m_previewsView->setChecked(true); break;
|
||||
}
|
||||
|
||||
// create 'Start with split view' checkbox
|
||||
m_startSplit = new QCheckBox(i18n("Start with split view"), vBox);
|
||||
m_startSplit->setChecked(settings.isViewSplit());
|
||||
|
||||
// create 'Start with editable navigation bar' checkbox
|
||||
m_startEditable = new QCheckBox(i18n("Start with editable navigation bar"), vBox);
|
||||
m_startEditable->setChecked(settings.isURLEditable());
|
||||
|
||||
// create 'Save view properties for each folder' checkbox
|
||||
m_saveView = new QCheckBox(i18n("Save view properties for each folder"), vBox);
|
||||
m_saveView->setChecked(settings.isSaveView());
|
||||
|
||||
// Add a dummy widget with no restriction regarding
|
||||
// a vertical resizing. This assures that the dialog layout
|
||||
// is not stretched vertically.
|
||||
new QWidget(vBox);
|
||||
|
||||
topLayout->addWidget(vBox);
|
||||
}
|
||||
|
||||
|
||||
GeneralSettingsPage::~GeneralSettingsPage()
|
||||
{
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::applySettings()
|
||||
{
|
||||
DolphinSettings& settings = DolphinSettings::instance();
|
||||
|
||||
const KURL url(m_homeURL->text());
|
||||
KFileItem fileItem(S_IFDIR, KFileItem::Unknown, url);
|
||||
if (url.isValid() && fileItem.isDir()) {
|
||||
settings.setHomeURL(url);
|
||||
}
|
||||
|
||||
DolphinView::Mode viewMode = DolphinView::IconsView;
|
||||
if (m_detailsView->isChecked()) {
|
||||
viewMode = DolphinView::DetailsView;
|
||||
}
|
||||
else if (m_previewsView->isChecked()) {
|
||||
viewMode = DolphinView::PreviewsView;
|
||||
}
|
||||
settings.setDefaultViewMode(viewMode);
|
||||
|
||||
settings.setViewSplit(m_startSplit->isChecked());
|
||||
settings.setSaveView(m_saveView->isChecked());
|
||||
settings.setURLEditable(m_startEditable->isChecked());
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::selectHomeURL()
|
||||
{
|
||||
const QString homeURL(m_homeURL->text());
|
||||
KURL url(KFileDialog::getExistingURL(homeURL));
|
||||
if (!url.isEmpty()) {
|
||||
m_homeURL->setText(url.prettyURL());
|
||||
}
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::useCurrentLocation()
|
||||
{
|
||||
const DolphinView* view = Dolphin::mainWin().activeView();
|
||||
m_homeURL->setText(view->url().prettyURL());
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::useDefaulLocation()
|
||||
{
|
||||
m_homeURL->setText("file://" + QDir::homeDirPath());
|
||||
}
|
||||
|
||||
#include "generalsettingspage.moc"
|
@ -0,0 +1,63 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef GENERALSETTINGSPAGE_H
|
||||
#define GENERALSETTINGSPAGE_H
|
||||
|
||||
#include <settingspagebase.h>
|
||||
class QLineEdit;
|
||||
class QRadioButton;
|
||||
class QCheckBox;
|
||||
|
||||
/**
|
||||
* @brief Page for the 'General' settings of the Dolphin settings dialog.
|
||||
*
|
||||
* The general settings allow to set the home URL, the default view mode
|
||||
* and the split view mode.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class GeneralSettingsPage : public SettingsPageBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GeneralSettingsPage(QWidget* parent);
|
||||
|
||||
virtual ~GeneralSettingsPage();
|
||||
|
||||
/** @see SettingsPageBase::applySettings */
|
||||
virtual void applySettings();
|
||||
|
||||
private slots:
|
||||
void selectHomeURL();
|
||||
void useCurrentLocation();
|
||||
void useDefaulLocation();
|
||||
|
||||
private:
|
||||
QLineEdit* m_homeURL;
|
||||
QRadioButton* m_iconsView;
|
||||
QRadioButton* m_detailsView;
|
||||
QRadioButton* m_previewsView;
|
||||
QCheckBox* m_startSplit;
|
||||
QCheckBox* m_startEditable;
|
||||
QCheckBox* m_saveView;
|
||||
};
|
||||
|
||||
#endif
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,262 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "iconsviewsettingspage.h"
|
||||
|
||||
#include <qlabel.h>
|
||||
#include <qslider.h>
|
||||
#include <qbuttongroup.h>
|
||||
#include <qradiobutton.h>
|
||||
#include <qspinbox.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kfontcombo.h>
|
||||
#include <kdialog.h>
|
||||
#include <klocale.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "dolphiniconsviewsettings.h"
|
||||
#include "dolphinsettings.h"
|
||||
#include "pixmapviewer.h"
|
||||
|
||||
#define GRID_SPACING_BASE 8
|
||||
#define GRID_SPACING_INC 12
|
||||
|
||||
IconsViewSettingsPage::IconsViewSettingsPage(DolphinIconsView::LayoutMode mode,
|
||||
QWidget* parent) :
|
||||
QVBox(parent),
|
||||
m_mode(mode),
|
||||
m_iconSizeSlider(0),
|
||||
m_previewSizeSlider(0),
|
||||
m_textWidthBox(0),
|
||||
m_gridSpacingBox(0),
|
||||
m_fontFamilyBox(0),
|
||||
m_fontSizeBox(0),
|
||||
m_textlinesCountBox(0),
|
||||
m_arrangementBox(0)
|
||||
{
|
||||
const int spacing = KDialog::spacingHint();
|
||||
const int margin = KDialog::marginHint();
|
||||
const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
setSpacing(spacing);
|
||||
setMargin(margin);
|
||||
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_mode);
|
||||
assert(settings != 0);
|
||||
|
||||
QHBox* sizesLayout = new QHBox(this);
|
||||
sizesLayout->setSpacing(spacing);
|
||||
sizesLayout->setSizePolicy(sizePolicy);
|
||||
|
||||
// create 'Icon Size' group including slider and preview
|
||||
QGroupBox* iconSizeGroup = new QGroupBox(2, Qt::Vertical, i18n("Icon Size"), sizesLayout);
|
||||
iconSizeGroup->setSizePolicy(sizePolicy);
|
||||
iconSizeGroup->setMargin(margin);
|
||||
|
||||
const QColor iconBackgroundColor(KGlobalSettings::baseColor());
|
||||
|
||||
QHBox* iconSizeVBox = new QHBox(iconSizeGroup);
|
||||
iconSizeVBox->setSpacing(spacing);
|
||||
new QLabel(i18n("Small"), iconSizeVBox);
|
||||
m_iconSizeSlider = new QSlider(0, 5, 1, 0, Qt::Horizontal, iconSizeVBox);
|
||||
m_iconSizeSlider->setValue(sliderValue(settings->iconSize()));
|
||||
m_iconSizeSlider->setTickmarks(QSlider::Below);
|
||||
connect(m_iconSizeSlider, SIGNAL(valueChanged(int)),
|
||||
this, SLOT(slotIconSizeChanged(int)));
|
||||
new QLabel(i18n("Large"), iconSizeVBox);
|
||||
|
||||
m_iconSizeViewer = new PixmapViewer(iconSizeGroup);
|
||||
m_iconSizeViewer->setMinimumWidth(KIcon::SizeEnormous);
|
||||
m_iconSizeViewer->setFixedHeight(KIcon::SizeEnormous);
|
||||
m_iconSizeViewer->setEraseColor(iconBackgroundColor);
|
||||
slotIconSizeChanged(m_iconSizeSlider->value());
|
||||
|
||||
if (m_mode == DolphinIconsView::Previews) {
|
||||
// create 'Preview Size' group including slider and preview
|
||||
QGroupBox* previewSizeGroup = new QGroupBox(2, Qt::Vertical, i18n("Preview Size"), sizesLayout);
|
||||
previewSizeGroup->setSizePolicy(sizePolicy);
|
||||
previewSizeGroup->setMargin(margin);
|
||||
|
||||
QHBox* previewSizeVBox = new QHBox(previewSizeGroup);
|
||||
previewSizeVBox->setSpacing(spacing);
|
||||
new QLabel(i18n("Small"), previewSizeVBox);
|
||||
m_previewSizeSlider = new QSlider(0, 5, 1, 0, Qt::Horizontal, previewSizeVBox);
|
||||
m_previewSizeSlider->setValue(sliderValue(settings->previewSize()));
|
||||
m_previewSizeSlider->setTickmarks(QSlider::Below);
|
||||
connect(m_previewSizeSlider, SIGNAL(valueChanged(int)),
|
||||
this, SLOT(slotPreviewSizeChanged(int)));
|
||||
new QLabel(i18n("Large"), previewSizeVBox);
|
||||
|
||||
m_previewSizeViewer = new PixmapViewer(previewSizeGroup);
|
||||
m_previewSizeViewer->setMinimumWidth(KIcon::SizeEnormous);
|
||||
m_previewSizeViewer->setFixedHeight(KIcon::SizeEnormous);
|
||||
m_previewSizeViewer->setEraseColor(iconBackgroundColor);
|
||||
|
||||
slotPreviewSizeChanged(m_previewSizeSlider->value());
|
||||
}
|
||||
|
||||
QGroupBox* textGroup = new QGroupBox(2, Qt::Horizontal, i18n("Text"), this);
|
||||
textGroup->setSizePolicy(sizePolicy);
|
||||
textGroup->setMargin(margin);
|
||||
|
||||
new QLabel(i18n("Font family:"), textGroup);
|
||||
m_fontFamilyBox = new KFontCombo(textGroup);
|
||||
m_fontFamilyBox->setCurrentFont(settings->fontFamily());
|
||||
|
||||
new QLabel(i18n("Font size:"), textGroup);
|
||||
m_fontSizeBox = new QSpinBox(6, 99, 1, textGroup);
|
||||
m_fontSizeBox->setValue(settings->fontSize());
|
||||
|
||||
new QLabel(i18n("Number of lines:"), textGroup);
|
||||
m_textlinesCountBox = new QSpinBox(1, 5, 1, textGroup);
|
||||
m_textlinesCountBox->setValue(settings->textlinesCount());
|
||||
|
||||
new QLabel(i18n("Text width:"), textGroup);
|
||||
m_textWidthBox = new QComboBox(textGroup);
|
||||
m_textWidthBox->insertItem(i18n("Small"));
|
||||
m_textWidthBox->insertItem(i18n("Medium"));
|
||||
m_textWidthBox->insertItem(i18n("Large"));
|
||||
|
||||
QGroupBox* gridGroup = new QGroupBox(2, Qt::Horizontal, i18n("Grid"), this);
|
||||
gridGroup->setSizePolicy(sizePolicy);
|
||||
gridGroup->setMargin(margin);
|
||||
|
||||
const bool leftToRightArrangement = (settings->arrangement() == QIconView::LeftToRight);
|
||||
new QLabel(i18n("Arrangement:"), gridGroup);
|
||||
m_arrangementBox = new QComboBox(gridGroup);
|
||||
m_arrangementBox->insertItem(i18n("Left to right"));
|
||||
m_arrangementBox->insertItem(i18n("Top to bottom"));
|
||||
m_arrangementBox->setCurrentItem(leftToRightArrangement ? 0 : 1);
|
||||
|
||||
new QLabel(i18n("Grid spacing:"), gridGroup);
|
||||
m_gridSpacingBox = new QComboBox(gridGroup);
|
||||
m_gridSpacingBox->insertItem(i18n("Small"));
|
||||
m_gridSpacingBox->insertItem(i18n("Medium"));
|
||||
m_gridSpacingBox->insertItem(i18n("Large"));
|
||||
m_gridSpacingBox->setCurrentItem((settings->gridSpacing() - GRID_SPACING_BASE) / GRID_SPACING_INC);
|
||||
|
||||
// Add a dummy widget with no restriction regarding
|
||||
// a vertical resizing. This assures that the dialog layout
|
||||
// is not stretched vertically.
|
||||
new QWidget(this);
|
||||
|
||||
adjustTextWidthSelection();
|
||||
}
|
||||
|
||||
IconsViewSettingsPage::~IconsViewSettingsPage()
|
||||
{
|
||||
}
|
||||
|
||||
void IconsViewSettingsPage::applySettings()
|
||||
{
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_mode);
|
||||
assert(settings != 0);
|
||||
|
||||
const int defaultSize = iconSize(m_iconSizeSlider->value());
|
||||
settings->setIconSize(defaultSize);
|
||||
|
||||
int previewSize = (m_mode == DolphinIconsView::Previews) ?
|
||||
iconSize(m_previewSizeSlider->value()) :
|
||||
defaultSize;
|
||||
if (previewSize < defaultSize) {
|
||||
// assure that the preview size is never smaller than the icon size
|
||||
previewSize = defaultSize;
|
||||
}
|
||||
settings->setPreviewSize(previewSize);
|
||||
|
||||
const int fontSize = m_fontSizeBox->value();
|
||||
|
||||
QIconView::Arrangement arrangement = (m_arrangementBox->currentItem() == 0) ?
|
||||
QIconView::LeftToRight :
|
||||
QIconView::TopToBottom;
|
||||
settings->setArrangement(arrangement);
|
||||
settings->calculateGridSize(m_textWidthBox->currentItem());
|
||||
|
||||
settings->setFontFamily(m_fontFamilyBox->currentFont());
|
||||
settings->setFontSize(fontSize);
|
||||
settings->setTextlinesCount(m_textlinesCountBox->value());
|
||||
|
||||
settings->setGridSpacing(GRID_SPACING_BASE +
|
||||
m_gridSpacingBox->currentItem() * GRID_SPACING_INC);
|
||||
}
|
||||
|
||||
void IconsViewSettingsPage::slotIconSizeChanged(int value)
|
||||
{
|
||||
KIconLoader iconLoader;
|
||||
m_iconSizeViewer->setPixmap(iconLoader.loadIcon("folder", KIcon::Desktop, iconSize(value)));
|
||||
|
||||
if (m_previewSizeSlider != 0) {
|
||||
int previewSizeValue = m_previewSizeSlider->value();
|
||||
if (previewSizeValue < value) {
|
||||
// assure that the preview size is never smaller than the icon size
|
||||
previewSizeValue = value;
|
||||
}
|
||||
slotPreviewSizeChanged(previewSizeValue);
|
||||
}
|
||||
}
|
||||
|
||||
void IconsViewSettingsPage::slotPreviewSizeChanged(int value)
|
||||
{
|
||||
KIconLoader iconLoader;
|
||||
const int iconSizeValue = m_iconSizeSlider->value();
|
||||
if (value < iconSizeValue) {
|
||||
// assure that the preview size is never smaller than the icon size
|
||||
value = iconSizeValue;
|
||||
}
|
||||
m_previewSizeViewer->setPixmap(iconLoader.loadIcon("preview", KIcon::Desktop, iconSize(value)));
|
||||
}
|
||||
|
||||
int IconsViewSettingsPage::iconSize(int sliderValue) const
|
||||
{
|
||||
int size = KIcon::SizeMedium;
|
||||
switch (sliderValue) {
|
||||
case 0: size = KIcon::SizeSmall; break;
|
||||
case 1: size = KIcon::SizeSmallMedium; break;
|
||||
case 2: size = KIcon::SizeMedium; break;
|
||||
case 3: size = KIcon::SizeLarge; break;
|
||||
case 4: size = KIcon::SizeHuge; break;
|
||||
case 5: size = KIcon::SizeEnormous; break;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
int IconsViewSettingsPage::sliderValue(int iconSize) const
|
||||
{
|
||||
int value = 0;
|
||||
switch (iconSize) {
|
||||
case KIcon::SizeSmall: value = 0; break;
|
||||
case KIcon::SizeSmallMedium: value = 1; break;
|
||||
case KIcon::SizeMedium: value = 2; break;
|
||||
case KIcon::SizeLarge: value = 3; break;
|
||||
case KIcon::SizeHuge: value = 4; break;
|
||||
case KIcon::SizeEnormous: value = 5; break;
|
||||
default: break;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
void IconsViewSettingsPage::adjustTextWidthSelection()
|
||||
{
|
||||
DolphinIconsViewSettings* settings = DolphinSettings::instance().iconsView(m_mode);
|
||||
assert(settings != 0);
|
||||
m_textWidthBox->setCurrentItem(settings->textWidthHint());
|
||||
}
|
||||
|
||||
#include "iconsviewsettingspage.moc"
|
@ -0,0 +1,99 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef ICONSVIEWSETTINGSPAGE_H
|
||||
#define ICONSVIEWSETTINGSPAGE_H
|
||||
|
||||
#include <qvbox.h>
|
||||
#include <dolphiniconsview.h>
|
||||
|
||||
class QSlider;
|
||||
class QComboBox;
|
||||
class QCheckBox;
|
||||
class QPushButton;
|
||||
class QSpinBox;
|
||||
class KFontCombo;
|
||||
class PixmapViewer;
|
||||
|
||||
/**
|
||||
* @brief Tab page for the 'Icons Mode' and 'Previews Mode' settings
|
||||
* of the Dolphin settings dialog.
|
||||
*
|
||||
* Allows to set:
|
||||
* - icon size
|
||||
* - preview size
|
||||
* - text width
|
||||
* - grid spacing
|
||||
* - font family
|
||||
* - font size
|
||||
* - number of text lines
|
||||
* - arrangement
|
||||
*
|
||||
* @see DolphinIconsViewSettings
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class IconsViewSettingsPage : public QVBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
IconsViewSettingsPage(DolphinIconsView::LayoutMode mode,
|
||||
QWidget* parent);
|
||||
virtual ~IconsViewSettingsPage();
|
||||
|
||||
/**
|
||||
* Applies the settings for the icons view.
|
||||
* The settings are persisted automatically when
|
||||
* closing Dolphin.
|
||||
*/
|
||||
void applySettings();
|
||||
|
||||
private slots:
|
||||
void slotIconSizeChanged(int value);
|
||||
void slotPreviewSizeChanged(int value);
|
||||
|
||||
private:
|
||||
DolphinIconsView::LayoutMode m_mode;
|
||||
|
||||
QSlider* m_iconSizeSlider;
|
||||
PixmapViewer* m_iconSizeViewer;
|
||||
QSlider* m_previewSizeSlider;
|
||||
PixmapViewer* m_previewSizeViewer;
|
||||
QComboBox* m_textWidthBox;
|
||||
QComboBox* m_gridSpacingBox;
|
||||
KFontCombo* m_fontFamilyBox;
|
||||
QSpinBox* m_fontSizeBox;
|
||||
QSpinBox* m_textlinesCountBox;
|
||||
QComboBox* m_arrangementBox;
|
||||
|
||||
/** Returns the icon size for the given slider value. */
|
||||
int iconSize(int sliderValue) const;
|
||||
|
||||
/** Returns the slider value for the given icon size. */
|
||||
int sliderValue(int iconSize) const;
|
||||
|
||||
/**
|
||||
* Adjusts the selection of the text width combo box dependant
|
||||
* from the grid width and grid height settings.
|
||||
*/
|
||||
void adjustTextWidthSelection();
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,630 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "infosidebarpage.h"
|
||||
#include <assert.h>
|
||||
|
||||
#include <qlayout.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qlabel.h>
|
||||
#include <qtimer.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qvbox.h>
|
||||
#include <qvgroupbox.h>
|
||||
#include <qpopupmenu.h>
|
||||
#include <qpainter.h>
|
||||
#include <qfontmetrics.h>
|
||||
#include <qgrid.h>
|
||||
#include <qhgroupbox.h>
|
||||
|
||||
#include <kbookmarkmanager.h>
|
||||
#include <klocale.h>
|
||||
#include <kstandarddirs.h>
|
||||
#include <kio/previewjob.h>
|
||||
#include <kfileitem.h>
|
||||
#include <kdialog.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <kfilemetainfo.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "pixmapviewer.h"
|
||||
#include "dolphinsettings.h"
|
||||
|
||||
InfoSidebarPage::InfoSidebarPage(QWidget* parent) :
|
||||
SidebarPage(parent),
|
||||
m_multipleSelection(false),
|
||||
m_pendingPreview(false),
|
||||
m_timer(0),
|
||||
m_preview(0),
|
||||
m_name(0),
|
||||
m_currInfoLineIdx(0),
|
||||
m_infoGrid(0),
|
||||
m_actionBox(0)
|
||||
{
|
||||
const int spacing = KDialog::spacingHint();
|
||||
|
||||
m_timer = new QTimer(this);
|
||||
connect(m_timer, SIGNAL(timeout()),
|
||||
this, SLOT(slotTimeout()));
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setSpacing(spacing);
|
||||
|
||||
// preview
|
||||
m_preview = new PixmapViewer(this);
|
||||
m_preview->setMinimumWidth(KIcon::SizeEnormous);
|
||||
m_preview->setFixedHeight(KIcon::SizeEnormous);
|
||||
|
||||
// name
|
||||
m_name = new QLabel(this);
|
||||
m_name->setTextFormat(Qt::RichText);
|
||||
m_name->setAlignment(m_name->alignment() | Qt::AlignHCenter);
|
||||
QFontMetrics fontMetrics(m_name->font());
|
||||
m_name->setMinimumHeight(fontMetrics.height() * 3);
|
||||
m_name->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
|
||||
|
||||
QWidget* sep1 = new QHGroupBox(this); // TODO: check whether default widget exist for this?
|
||||
sep1->setFixedHeight(1);
|
||||
|
||||
// general information
|
||||
m_infoGrid = new QGrid(2, this);
|
||||
m_infoGrid->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
QWidget* sep2 = new QHGroupBox(this); // TODO: check whether default widget exist for this?
|
||||
sep2->setFixedHeight(1);
|
||||
|
||||
// actions
|
||||
m_actionBox = new QVBox(this);
|
||||
m_actionBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
// Add a dummy widget with no restriction regarding a vertical resizing.
|
||||
// This assures that information is always top aligned.
|
||||
QWidget* dummy = new QWidget(this);
|
||||
|
||||
layout->addItem(new QSpacerItem(spacing, spacing, QSizePolicy::Preferred, QSizePolicy::Fixed));
|
||||
layout->addWidget(m_preview);
|
||||
layout->addWidget(m_name);
|
||||
layout->addWidget(sep1);
|
||||
layout->addWidget(m_infoGrid);
|
||||
layout->addWidget(sep2);
|
||||
layout->addWidget(m_actionBox);
|
||||
layout->addWidget(dummy);
|
||||
|
||||
connect(&Dolphin::mainWin(), SIGNAL(selectionChanged()),
|
||||
this, SLOT(showItemInfo()));
|
||||
|
||||
connectToActiveView();
|
||||
}
|
||||
|
||||
InfoSidebarPage::~InfoSidebarPage()
|
||||
{
|
||||
}
|
||||
|
||||
void InfoSidebarPage::activeViewChanged()
|
||||
{
|
||||
connectToActiveView();
|
||||
}
|
||||
|
||||
void InfoSidebarPage::requestDelayedItemInfo(const KURL& url)
|
||||
{
|
||||
cancelRequest();
|
||||
|
||||
if (!url.isEmpty() && !m_multipleSelection) {
|
||||
m_urlCandidate = url;
|
||||
m_timer->start(300, true);
|
||||
}
|
||||
}
|
||||
|
||||
void InfoSidebarPage::requestItemInfo(const KURL& url)
|
||||
{
|
||||
cancelRequest();
|
||||
|
||||
if (!url.isEmpty() && !m_multipleSelection) {
|
||||
m_shownURL = url;
|
||||
showItemInfo();
|
||||
}
|
||||
}
|
||||
|
||||
void InfoSidebarPage::showItemInfo()
|
||||
{
|
||||
cancelRequest();
|
||||
|
||||
m_multipleSelection = false;
|
||||
|
||||
// show the preview...
|
||||
DolphinView* view = Dolphin::mainWin().activeView();
|
||||
const KFileItemList* selectedItems = view->selectedItems();
|
||||
if ((selectedItems != 0) && selectedItems->count() > 1) {
|
||||
m_multipleSelection = true;
|
||||
}
|
||||
|
||||
if (m_multipleSelection) {
|
||||
KIconLoader iconLoader;
|
||||
QPixmap icon = iconLoader.loadIcon("exec",
|
||||
KIcon::NoGroup,
|
||||
KIcon::SizeEnormous);
|
||||
m_preview->setPixmap(icon);
|
||||
m_name->setText(i18n("%n items selected", "%n items selected", selectedItems->count()));
|
||||
}
|
||||
else if (!applyBookmark()) {
|
||||
// try to get a preview pixmap from the item...
|
||||
KURL::List list;
|
||||
list.append(m_shownURL);
|
||||
|
||||
m_pendingPreview = true;
|
||||
m_preview->setPixmap(QPixmap());
|
||||
|
||||
KIO::PreviewJob* job = KIO::filePreview(list,
|
||||
m_preview->width(),
|
||||
KIcon::SizeEnormous);
|
||||
connect(job, SIGNAL(gotPreview(const KFileItem*, const QPixmap&)),
|
||||
this, SLOT(gotPreview(const KFileItem*, const QPixmap&)));
|
||||
connect(job, SIGNAL(failed(const KFileItem*)),
|
||||
this, SLOT(slotPreviewFailed(const KFileItem*)));
|
||||
|
||||
QString text("<b>");
|
||||
text.append(m_shownURL.fileName());
|
||||
text.append("</b>");
|
||||
m_name->setText(text);
|
||||
}
|
||||
|
||||
createMetaInfo();
|
||||
insertActions();
|
||||
}
|
||||
|
||||
void InfoSidebarPage::slotTimeout()
|
||||
{
|
||||
m_shownURL = m_urlCandidate;
|
||||
showItemInfo();
|
||||
}
|
||||
|
||||
void InfoSidebarPage::slotPreviewFailed(const KFileItem* item)
|
||||
{
|
||||
m_pendingPreview = false;
|
||||
if (!applyBookmark()) {
|
||||
m_preview->setPixmap(item->pixmap(KIcon::SizeEnormous));
|
||||
}
|
||||
}
|
||||
|
||||
void InfoSidebarPage::gotPreview(const KFileItem* /* item */,
|
||||
const QPixmap& pixmap)
|
||||
{
|
||||
if (m_pendingPreview) {
|
||||
m_preview->setPixmap(pixmap);
|
||||
m_pendingPreview = false;
|
||||
}
|
||||
}
|
||||
|
||||
void InfoSidebarPage::startService(int index)
|
||||
{
|
||||
DolphinView* view = Dolphin::mainWin().activeView();
|
||||
if (view->hasSelection()) {
|
||||
KURL::List selectedURLs = view->selectedURLs();
|
||||
KDEDesktopMimeType::executeService(selectedURLs, m_actionsVector[index]);
|
||||
}
|
||||
else {
|
||||
KDEDesktopMimeType::executeService(m_shownURL, m_actionsVector[index]);
|
||||
}
|
||||
}
|
||||
|
||||
void InfoSidebarPage::connectToActiveView()
|
||||
{
|
||||
cancelRequest();
|
||||
|
||||
DolphinView* view = Dolphin::mainWin().activeView();
|
||||
connect(view, SIGNAL(signalRequestItemInfo(const KURL&)),
|
||||
this, SLOT(requestDelayedItemInfo(const KURL&)));
|
||||
connect(view, SIGNAL(signalURLChanged(const KURL&)),
|
||||
this, SLOT(requestItemInfo(const KURL&)));
|
||||
|
||||
m_shownURL = view->url();
|
||||
showItemInfo();
|
||||
}
|
||||
|
||||
bool InfoSidebarPage::applyBookmark()
|
||||
{
|
||||
KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
|
||||
KBookmark bookmark = root.first();
|
||||
while (!bookmark.isNull()) {
|
||||
if (m_shownURL.equals(bookmark.url(), true)) {
|
||||
QString text("<b>");
|
||||
text.append(bookmark.text());
|
||||
text.append("</b>");
|
||||
m_name->setText(text);
|
||||
|
||||
KIconLoader iconLoader;
|
||||
QPixmap icon = iconLoader.loadIcon(bookmark.icon(),
|
||||
KIcon::NoGroup,
|
||||
KIcon::SizeEnormous);
|
||||
m_preview->setPixmap(icon);
|
||||
return true;
|
||||
}
|
||||
bookmark = root.next(bookmark);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void InfoSidebarPage::cancelRequest()
|
||||
{
|
||||
m_timer->stop();
|
||||
m_pendingPreview = false;
|
||||
}
|
||||
|
||||
void InfoSidebarPage::createMetaInfo()
|
||||
{
|
||||
// To prevent a flickering it's important to reuse available
|
||||
// labels instead of deleting them and recreate them afterwards.
|
||||
// The methods beginInfoLines(), addInfoLine() and endInfoLines()
|
||||
// take care of this.
|
||||
beginInfoLines();
|
||||
DolphinView* view = Dolphin::mainWin().activeView();
|
||||
if (!view->hasSelection()) {
|
||||
KFileItem fileItem(S_IFDIR, KFileItem::Unknown, m_shownURL);
|
||||
fileItem.refresh();
|
||||
|
||||
if (fileItem.isDir()) {
|
||||
addInfoLine(i18n("Type:"), i18n("Directory"));
|
||||
}
|
||||
else {
|
||||
addInfoLine(i18n("Type:"), fileItem.mimeComment());
|
||||
|
||||
QString sizeText(KIO::convertSize(fileItem.size()));
|
||||
addInfoLine(i18n("Size:"), sizeText);
|
||||
addInfoLine(i18n("Modified:"), fileItem.timeString());
|
||||
|
||||
const KFileMetaInfo& metaInfo = fileItem.metaInfo();
|
||||
if (metaInfo.isValid()) {
|
||||
QStringList keys = metaInfo.supportedKeys();
|
||||
for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) {
|
||||
if (showMetaInfo(*it)) {
|
||||
KFileMetaInfoItem metaInfoItem = metaInfo.item(*it);
|
||||
addInfoLine(*it, metaInfoItem.string());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
endInfoLines();
|
||||
}
|
||||
|
||||
void InfoSidebarPage::beginInfoLines()
|
||||
{
|
||||
m_currInfoLineIdx = 0;
|
||||
}
|
||||
|
||||
void InfoSidebarPage::endInfoLines()
|
||||
{
|
||||
if (m_currInfoLineIdx <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// remove labels which have not been used
|
||||
if (m_currInfoLineIdx < static_cast<int>(m_infoWidgets.count())) {
|
||||
QPtrListIterator<QLabel> deleteIter(m_infoWidgets);
|
||||
deleteIter += m_currInfoLineIdx;
|
||||
|
||||
QWidget* widget = 0;
|
||||
int removeCount = 0;
|
||||
while ((widget = deleteIter.current()) != 0) {
|
||||
widget->close();
|
||||
widget->deleteLater();
|
||||
++deleteIter;
|
||||
++removeCount;
|
||||
}
|
||||
for (int i = 0; i < removeCount; ++i) {
|
||||
m_infoWidgets.removeLast();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool InfoSidebarPage::showMetaInfo(const QString& key) const
|
||||
{
|
||||
// sorted list of keys, where it's data should be shown
|
||||
static const char* keys[] = {
|
||||
"Album",
|
||||
"Artist",
|
||||
"Author",
|
||||
"Bitrate",
|
||||
"Date",
|
||||
"Dimensions",
|
||||
"Genre",
|
||||
"Length",
|
||||
"Lines",
|
||||
"Pages",
|
||||
"Title",
|
||||
"Words"
|
||||
};
|
||||
|
||||
// do a binary search for the key...
|
||||
int top = 0;
|
||||
int bottom = sizeof(keys) / sizeof(char*) - 1;
|
||||
while (top < bottom) {
|
||||
const int middle = (top + bottom) / 2;
|
||||
const int result = key.compare(keys[middle]);
|
||||
if (result < 0) {
|
||||
bottom = middle - 1;
|
||||
}
|
||||
else if (result > 0) {
|
||||
top = middle + 1;
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void InfoSidebarPage::addInfoLine(const QString& labelText, const QString& infoText)
|
||||
{
|
||||
QString labelStr("<b>");
|
||||
labelStr.append(labelText);
|
||||
labelStr.append("</b> ");
|
||||
|
||||
const int count = m_infoWidgets.count();
|
||||
if (m_currInfoLineIdx < count - 1) {
|
||||
// reuse available labels
|
||||
m_infoWidgets.at(m_currInfoLineIdx++)->setText(labelStr);
|
||||
m_infoWidgets.at(m_currInfoLineIdx++)->setText(infoText);
|
||||
}
|
||||
else {
|
||||
// no labels are available anymore, hence create 2 new ones
|
||||
QLabel* label = new QLabel(labelStr, m_infoGrid);
|
||||
label->setTextFormat(Qt::RichText);
|
||||
label->setAlignment(Qt::AlignRight |
|
||||
Qt::AlignTop);
|
||||
label->show();
|
||||
m_infoWidgets.append(label);
|
||||
|
||||
QLabel* info = new QLabel(infoText, m_infoGrid);
|
||||
info->setTextFormat(Qt::RichText);
|
||||
info->setAlignment(Qt::AlignTop | Qt::WordBreak);
|
||||
info->show();
|
||||
m_infoWidgets.append(info);
|
||||
|
||||
m_currInfoLineIdx += 2;
|
||||
}
|
||||
}
|
||||
|
||||
void InfoSidebarPage::insertActions()
|
||||
{
|
||||
// delete all existing action widgets
|
||||
// TODO: just use children() from QObject...
|
||||
QPtrListIterator<QWidget> deleteIter(m_actionWidgets);
|
||||
QWidget* widget = 0;
|
||||
while ((widget = deleteIter.current()) != 0) {
|
||||
widget->close();
|
||||
widget->deleteLater();
|
||||
++deleteIter;
|
||||
}
|
||||
|
||||
m_actionWidgets.clear();
|
||||
m_actionsVector.clear();
|
||||
|
||||
int actionsIndex = 0;
|
||||
|
||||
// The algorithm for searching the available actions works on a list
|
||||
// of KFileItems. If no selection is given, a temporary KFileItem
|
||||
// by the given URL 'url' is created and added to the list.
|
||||
KFileItem fileItem(S_IFDIR, KFileItem::Unknown, m_shownURL);
|
||||
KFileItemList localList;
|
||||
const KFileItemList* itemList = Dolphin::mainWin().activeView()->selectedItems();
|
||||
if ((itemList == 0) || itemList->isEmpty()) {
|
||||
fileItem.refresh();
|
||||
localList.append(&fileItem);
|
||||
itemList = &localList;
|
||||
}
|
||||
|
||||
// 'itemList' contains now all KFileItems, where an item information should be shown.
|
||||
// TODO: the following algorithm is quite equal to DolphinContextMenu::insertActionItems().
|
||||
// It's open yet whether they should be merged or whether they have to work slightly different.
|
||||
QStringList dirs = KGlobal::dirs()->findDirs("data", "d3lphin/servicemenus/");
|
||||
for (QStringList::ConstIterator dirIt = dirs.begin(); dirIt != dirs.end(); ++dirIt) {
|
||||
QDir dir(*dirIt);
|
||||
QStringList entries = dir.entryList("*.desktop", QDir::Files);
|
||||
|
||||
for (QStringList::ConstIterator entryIt = entries.begin(); entryIt != entries.end(); ++entryIt) {
|
||||
KSimpleConfig cfg(*dirIt + *entryIt, true);
|
||||
cfg.setDesktopGroup();
|
||||
if ((cfg.hasKey("Actions") || cfg.hasKey("X-KDE-GetActionMenu")) && cfg.hasKey("ServiceTypes")) {
|
||||
const QStringList types = cfg.readListEntry("ServiceTypes");
|
||||
for (QStringList::ConstIterator it = types.begin(); it != types.end(); ++it) {
|
||||
// check whether the mime type is equal or whether the
|
||||
// mimegroup (e. g. image/*) is supported
|
||||
|
||||
bool insert = false;
|
||||
if ((*it) == "all/allfiles") {
|
||||
// The service type is valid for all files, but not for directories.
|
||||
// Check whether the selected items only consist of files...
|
||||
KFileItemListIterator mimeIt(*itemList);
|
||||
KFileItem* item = 0;
|
||||
insert = true;
|
||||
while (insert && ((item = mimeIt.current()) != 0)) {
|
||||
insert = !item->isDir();
|
||||
++mimeIt;
|
||||
}
|
||||
}
|
||||
|
||||
if (!insert) {
|
||||
// Check whether the MIME types of all selected files match
|
||||
// to the mimetype of the service action. As soon as one MIME
|
||||
// type does not match, no service menu is shown at all.
|
||||
KFileItemListIterator mimeIt(*itemList);
|
||||
KFileItem* item = 0;
|
||||
insert = true;
|
||||
while (insert && ((item = mimeIt.current()) != 0)) {
|
||||
const QString mimeType((*mimeIt)->mimetype());
|
||||
const QString mimeGroup(mimeType.left(mimeType.find('/')));
|
||||
|
||||
insert = (*it == mimeType) ||
|
||||
((*it).right(1) == "*") &&
|
||||
((*it).left((*it).find('/')) == mimeGroup);
|
||||
++mimeIt;
|
||||
}
|
||||
}
|
||||
|
||||
if (insert) {
|
||||
const QString submenuName = cfg.readEntry( "X-KDE-Submenu" );
|
||||
QPopupMenu* popup = 0;
|
||||
if (!submenuName.isEmpty()) {
|
||||
// create a sub menu containing all actions
|
||||
popup = new QPopupMenu();
|
||||
connect(popup, SIGNAL(activated(int)),
|
||||
this, SLOT(startService(int)));
|
||||
|
||||
QPushButton* button = new QPushButton(submenuName, m_actionBox);
|
||||
button->setFlat(true);
|
||||
button->setPopup(popup);
|
||||
button->show();
|
||||
m_actionWidgets.append(button);
|
||||
}
|
||||
|
||||
QValueList<KDEDesktopMimeType::Service> userServices =
|
||||
KDEDesktopMimeType::userDefinedServices(*dirIt + *entryIt, true);
|
||||
|
||||
// iterate through all actions and add them to a widget
|
||||
QValueList<KDEDesktopMimeType::Service>::Iterator serviceIt;
|
||||
for (serviceIt = userServices.begin(); serviceIt != userServices.end(); ++serviceIt) {
|
||||
KDEDesktopMimeType::Service service = (*serviceIt);
|
||||
if (popup == 0) {
|
||||
ServiceButton* button = new ServiceButton(SmallIcon(service.m_strIcon),
|
||||
service.m_strName,
|
||||
m_actionBox,
|
||||
actionsIndex);
|
||||
connect(button, SIGNAL(requestServiceStart(int)),
|
||||
this, SLOT(startService(int)));
|
||||
m_actionWidgets.append(button);
|
||||
button->show();
|
||||
}
|
||||
else {
|
||||
popup->insertItem(SmallIcon(service.m_strIcon), service.m_strName, actionsIndex);
|
||||
}
|
||||
|
||||
m_actionsVector.append(service);
|
||||
++actionsIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ServiceButton::ServiceButton(const QIconSet& icon,
|
||||
const QString& text,
|
||||
QWidget* parent,
|
||||
int index) :
|
||||
QPushButton(icon, text, parent),
|
||||
m_hover(false),
|
||||
m_index(index)
|
||||
{
|
||||
setEraseColor(colorGroup().background());
|
||||
setFocusPolicy(QWidget::NoFocus);
|
||||
connect(this, SIGNAL(released()),
|
||||
this, SLOT(slotReleased()));
|
||||
}
|
||||
|
||||
ServiceButton::~ServiceButton()
|
||||
{
|
||||
}
|
||||
|
||||
void ServiceButton::drawButton(QPainter* painter)
|
||||
{
|
||||
const int buttonWidth = width();
|
||||
const int buttonHeight = height();
|
||||
|
||||
QColor backgroundColor;
|
||||
QColor foregroundColor;
|
||||
if (m_hover) {
|
||||
backgroundColor = KGlobalSettings::highlightColor();
|
||||
foregroundColor = KGlobalSettings::highlightedTextColor();
|
||||
}
|
||||
else {
|
||||
backgroundColor = colorGroup().background();
|
||||
foregroundColor = KGlobalSettings::buttonTextColor();
|
||||
}
|
||||
|
||||
// draw button background
|
||||
painter->setPen(NoPen);
|
||||
painter->setBrush(backgroundColor);
|
||||
painter->drawRect(0, 0, buttonWidth, buttonHeight);
|
||||
|
||||
const int spacing = KDialog::spacingHint();
|
||||
|
||||
// draw icon
|
||||
int x = spacing;
|
||||
const int y = (buttonHeight - KIcon::SizeSmall) / 2;
|
||||
const QIconSet* set = iconSet();
|
||||
if (set != 0) {
|
||||
painter->drawPixmap(x, y, set->pixmap(QIconSet::Small, QIconSet::Normal));
|
||||
}
|
||||
x += KIcon::SizeSmall + spacing;
|
||||
|
||||
// draw text
|
||||
painter->setPen(foregroundColor);
|
||||
|
||||
const int textWidth = buttonWidth - x;
|
||||
QFontMetrics fontMetrics(font());
|
||||
const bool clipped = fontMetrics.width(text()) >= textWidth;
|
||||
//const int align = clipped ? Qt::AlignVCenter : Qt::AlignCenter;
|
||||
painter->drawText(QRect(x, 0, textWidth, buttonHeight), Qt::AlignVCenter, text());
|
||||
|
||||
if (clipped) {
|
||||
// Blend the right area of the text with the background, as the
|
||||
// text is clipped.
|
||||
// TODO #1: use alpha blending in Qt4 instead of drawing the text that often
|
||||
// TODO #2: same code as in URLNavigatorButton::drawButton() -> provide helper class?
|
||||
const int blendSteps = 16;
|
||||
|
||||
QColor blendColor(backgroundColor);
|
||||
const int redInc = (foregroundColor.red() - backgroundColor.red()) / blendSteps;
|
||||
const int greenInc = (foregroundColor.green() - backgroundColor.green()) / blendSteps;
|
||||
const int blueInc = (foregroundColor.blue() - backgroundColor.blue()) / blendSteps;
|
||||
for (int i = 0; i < blendSteps; ++i) {
|
||||
painter->setClipRect(QRect(x + textWidth - i, 0, 1, buttonHeight));
|
||||
painter->setPen(blendColor);
|
||||
painter->drawText(QRect(x, 0, textWidth, buttonHeight), Qt::AlignVCenter, text());
|
||||
|
||||
blendColor.setRgb(blendColor.red() + redInc,
|
||||
blendColor.green() + greenInc,
|
||||
blendColor.blue() + blueInc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ServiceButton::enterEvent(QEvent* event)
|
||||
{
|
||||
QPushButton::enterEvent(event);
|
||||
m_hover = true;
|
||||
update();
|
||||
}
|
||||
|
||||
void ServiceButton::leaveEvent(QEvent* event)
|
||||
{
|
||||
QPushButton::leaveEvent(event);
|
||||
m_hover = false;
|
||||
update();
|
||||
}
|
||||
|
||||
void ServiceButton::slotReleased()
|
||||
{
|
||||
emit requestServiceStart(m_index);
|
||||
}
|
||||
|
@ -0,0 +1,194 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _INFOSIDEBARPAGE_H_
|
||||
#define _INFOSIDEBARPAGE_H_
|
||||
|
||||
#include <sidebarpage.h>
|
||||
|
||||
#include <qvaluevector.h>
|
||||
#include <qpushbutton.h>
|
||||
|
||||
#include <kurl.h>
|
||||
#include <ksortablevaluelist.h>
|
||||
#include <kmimetype.h>
|
||||
|
||||
namespace KIO {
|
||||
class Job;
|
||||
};
|
||||
|
||||
class QPixmap;
|
||||
class QIconSet;
|
||||
class QString;
|
||||
class QPainter;
|
||||
class KFileItem;
|
||||
class QLabel;
|
||||
class QVBox;
|
||||
class QGrid;
|
||||
class PixmapViewer;
|
||||
|
||||
/**
|
||||
* @brief Prototype for a information sidebar.
|
||||
*
|
||||
* Will be exchanged in future releases by pluggable sidebar pages...
|
||||
*/
|
||||
class InfoSidebarPage : public SidebarPage
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
InfoSidebarPage(QWidget* parent);
|
||||
virtual ~InfoSidebarPage();
|
||||
|
||||
protected:
|
||||
/** @see SidebarPage::activeViewChanged() */
|
||||
virtual void activeViewChanged();
|
||||
|
||||
private slots:
|
||||
/**
|
||||
* Does a delayed request of information for the item of the given URL and
|
||||
* provides default actions.
|
||||
*
|
||||
* @see InfoSidebarPage::showItemInfo()
|
||||
*/
|
||||
void requestDelayedItemInfo(const KURL& url);
|
||||
|
||||
/**
|
||||
* Does a request of information for the item of the given URL and
|
||||
* provides default actions.
|
||||
*
|
||||
* @see InfoSidebarPage::showItemInfo()
|
||||
*/
|
||||
void requestItemInfo(const KURL& url);
|
||||
|
||||
/**
|
||||
* Shows the information for the item of the URL which has been provided by
|
||||
* InfoSidebarPage::requestItemInfo() and provides default actions.
|
||||
*/
|
||||
void showItemInfo();
|
||||
|
||||
/**
|
||||
* Triggered if the request for item information has timed out.
|
||||
* @see InfoSidebarPage::requestDelayedItemInfo()
|
||||
*/
|
||||
void slotTimeout();
|
||||
|
||||
/**
|
||||
* Is invoked if no preview is available for the item. In this
|
||||
* case the icon will be shown.
|
||||
*/
|
||||
void slotPreviewFailed(const KFileItem* item);
|
||||
|
||||
/**
|
||||
* Is invoked if a preview is available for the item. The preview
|
||||
* \a pixmap is shown inside the info page.
|
||||
*/
|
||||
void gotPreview(const KFileItem* item, const QPixmap& pixmap);
|
||||
|
||||
/**
|
||||
* Starts the service of m_actionsVector with the index \index on
|
||||
* the shown URL (or the selected items if available).
|
||||
*/
|
||||
void startService(int index);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Connects to signals from the currently active Dolphin view to get
|
||||
* informed about highlighting changes.
|
||||
*/
|
||||
void connectToActiveView();
|
||||
|
||||
/**
|
||||
* Checks whether the current URL is repesented by a bookmark. If yes,
|
||||
* then the bookmark icon and name are shown instead of a preview.
|
||||
* @return True, if the URL represents exactly a bookmark.
|
||||
*/
|
||||
bool applyBookmark();
|
||||
|
||||
/** Assures that any pending item information request is cancelled. */
|
||||
void cancelRequest();
|
||||
|
||||
// TODO: the following methods are just a prototypes for meta
|
||||
// info generation...
|
||||
void createMetaInfo();
|
||||
void addInfoLine(const QString& labelText,
|
||||
const QString& infoText);
|
||||
void beginInfoLines();
|
||||
void endInfoLines();
|
||||
|
||||
/**
|
||||
* Returns true, if the string \a key represents a meta information
|
||||
* that should be shown.
|
||||
*/
|
||||
bool showMetaInfo(const QString& key) const;
|
||||
|
||||
/**
|
||||
* Inserts the available actions to the info page for the given item.
|
||||
*/
|
||||
void insertActions();
|
||||
|
||||
bool m_multipleSelection;
|
||||
bool m_pendingPreview;
|
||||
QTimer* m_timer;
|
||||
KURL m_shownURL;
|
||||
KURL m_urlCandidate;
|
||||
|
||||
PixmapViewer* m_preview;
|
||||
QLabel* m_name;
|
||||
|
||||
int m_currInfoLineIdx;
|
||||
QGrid* m_infoGrid;
|
||||
QPtrList<QLabel> m_infoWidgets; // TODO: use children() from QObject instead
|
||||
|
||||
QVBox* m_actionBox;
|
||||
QPtrList<QWidget> m_actionWidgets; // TODO: use children() from QObject instead
|
||||
QValueVector<KDEDesktopMimeType::Service> m_actionsVector;
|
||||
};
|
||||
|
||||
// TODO #1: move to SidebarPage?
|
||||
// TODO #2: quite same button from the optical point of view as URLNavigatorButton
|
||||
// -> provide helper class or common base class
|
||||
class ServiceButton : public QPushButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ServiceButton(const QIconSet& icon,
|
||||
const QString& text,
|
||||
QWidget* parent,
|
||||
int index);
|
||||
virtual ~ServiceButton();
|
||||
|
||||
signals:
|
||||
void requestServiceStart(int index);
|
||||
|
||||
protected:
|
||||
virtual void drawButton(QPainter* painter);
|
||||
virtual void enterEvent(QEvent* event);
|
||||
virtual void leaveEvent(QEvent* event);
|
||||
|
||||
private slots:
|
||||
void slotReleased();
|
||||
|
||||
private:
|
||||
bool m_hover;
|
||||
int m_index;
|
||||
};
|
||||
|
||||
#endif // _INFOSIDEBARPAGE_H_
|
@ -0,0 +1,189 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "itemeffectsmanager.h"
|
||||
#include <kiconeffect.h>
|
||||
#include <kapplication.h>
|
||||
#include <qobjectlist.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <qclipboard.h>
|
||||
#include <kurldrag.h>
|
||||
#include <klocale.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "dolphinstatusbar.h"
|
||||
|
||||
ItemEffectsManager::ItemEffectsManager()
|
||||
{
|
||||
m_pixmapCopy = new QPixmap();
|
||||
}
|
||||
|
||||
ItemEffectsManager::~ItemEffectsManager()
|
||||
{
|
||||
delete m_pixmapCopy;
|
||||
m_pixmapCopy = 0;
|
||||
|
||||
m_highlightedURL = 0;
|
||||
}
|
||||
|
||||
void ItemEffectsManager::zoomIn()
|
||||
{
|
||||
Dolphin::mainWin().refreshViews();
|
||||
}
|
||||
|
||||
void ItemEffectsManager::zoomOut()
|
||||
{
|
||||
Dolphin::mainWin().refreshViews();
|
||||
}
|
||||
|
||||
void ItemEffectsManager::activateItem(void* context)
|
||||
{
|
||||
KFileItem* fileInfo = contextFileInfo(context);
|
||||
const KURL itemURL(fileInfo->url());
|
||||
if (m_highlightedURL == itemURL) {
|
||||
// the item is already highlighted
|
||||
return;
|
||||
}
|
||||
|
||||
resetActivatedItem();
|
||||
|
||||
const QPixmap* itemPixmap = contextPixmap(context);
|
||||
if (itemPixmap != 0) {
|
||||
// remember the pixmap and item to be able to
|
||||
// restore it to the old state later
|
||||
*m_pixmapCopy = *itemPixmap;
|
||||
m_highlightedURL = itemURL;
|
||||
|
||||
// apply an icon effect to the item below the mouse pointer
|
||||
KIconEffect iconEffect;
|
||||
QPixmap pixmap = iconEffect.apply(*itemPixmap,
|
||||
KIcon::Desktop,
|
||||
KIcon::ActiveState);
|
||||
setContextPixmap(context, pixmap);
|
||||
}
|
||||
|
||||
if (!Dolphin::mainWin().activeView()->hasSelection()) {
|
||||
DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar();
|
||||
statusBar->setMessage(statusBarText(fileInfo), DolphinStatusBar::Default);
|
||||
}
|
||||
}
|
||||
|
||||
void ItemEffectsManager::resetActivatedItem()
|
||||
{
|
||||
if (m_highlightedURL.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (void* context = firstContext(); context != 0; context = nextContext(context)) {
|
||||
KURL itemURL(contextFileInfo(context)->url());
|
||||
if (itemURL == m_highlightedURL) {
|
||||
// the highlighted item has been found and is restored to the default state
|
||||
KIconEffect iconEffect;
|
||||
QPixmap pixmap = iconEffect.apply(*m_pixmapCopy,
|
||||
KIcon::Desktop,
|
||||
KIcon::DefaultState);
|
||||
|
||||
// TODO: KFileIconView does not emit any signal when the preview has been finished.
|
||||
// Hence check the size to prevent that a preview is hidden by restoring a
|
||||
// non-preview pixmap.
|
||||
const QPixmap* highlightedPixmap = contextPixmap(context);
|
||||
const bool restore = (pixmap.width() == highlightedPixmap->width()) &&
|
||||
(pixmap.height() == highlightedPixmap->height());
|
||||
if (restore) {
|
||||
setContextPixmap(context, pixmap);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_highlightedURL = 0;
|
||||
|
||||
DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar();
|
||||
statusBar->clear();
|
||||
}
|
||||
|
||||
void ItemEffectsManager::updateDisabledItems()
|
||||
{
|
||||
if (!m_disabledItems.isEmpty()) {
|
||||
// restore all disabled items with their original pixmap
|
||||
for (void* context = firstContext(); context != 0; context = nextContext(context)) {
|
||||
const KFileItem* fileInfo = contextFileInfo(context);
|
||||
const KURL& fileURL = fileInfo->url();
|
||||
QValueListIterator<DisabledItem> it = m_disabledItems.begin();
|
||||
while (it != m_disabledItems.end()) {
|
||||
if (fileURL == (*it).url) {
|
||||
setContextPixmap(context, (*it).pixmap);
|
||||
}
|
||||
++it;
|
||||
}
|
||||
}
|
||||
m_disabledItems.clear();
|
||||
}
|
||||
|
||||
if (!Dolphin::mainWin().clipboardContainsCutData()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QClipboard* clipboard = QApplication::clipboard();
|
||||
QMimeSource* data = clipboard->data();
|
||||
if (!KURLDrag::canDecode(data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// The clipboard contains items, which have been cutted. Change the pixmaps of all those
|
||||
// items to the disabled state.
|
||||
KURL::List urls;
|
||||
KURLDrag::decode(data, urls);
|
||||
for (void* context = firstContext(); context != 0; context = nextContext(context)) {
|
||||
const KFileItem* fileInfo = contextFileInfo(context);
|
||||
const KURL& fileURL = fileInfo->url();
|
||||
for(KURL::List::ConstIterator it = urls.begin(); it != urls.end(); ++it) {
|
||||
if (fileURL == (*it)) {
|
||||
const QPixmap* itemPixmap = contextPixmap(context);
|
||||
if (itemPixmap != 0) {
|
||||
// remember old pixmap
|
||||
DisabledItem disabledItem;
|
||||
disabledItem.url = fileURL;
|
||||
disabledItem.pixmap = *itemPixmap;
|
||||
m_disabledItems.append(disabledItem);
|
||||
|
||||
KIconEffect iconEffect;
|
||||
QPixmap disabledPixmap = iconEffect.apply(*itemPixmap,
|
||||
KIcon::Desktop,
|
||||
KIcon::DisabledState);
|
||||
setContextPixmap(context, disabledPixmap);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString ItemEffectsManager::statusBarText(KFileItem* fileInfo) const
|
||||
{
|
||||
if (fileInfo->isDir()) {
|
||||
// KFileItem::getStatusBar() returns "MyDocuments/ Folder" as
|
||||
// status bar text for a folder 'MyDocuments'. This is adjusted
|
||||
// to "MyDocuments (Folder)" in Dolphin.
|
||||
return i18n("%1 (Folder)").arg(fileInfo->name());
|
||||
}
|
||||
|
||||
return fileInfo->getStatusBarInfo();
|
||||
}
|
@ -0,0 +1,120 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef ITEMEFFECTSMANAGER_H
|
||||
#define ITEMEFFECTSMANAGER_H
|
||||
|
||||
#include <qobject.h>
|
||||
#include <qpixmap.h>
|
||||
#include <kurl.h>
|
||||
#include <qvaluelist.h>
|
||||
class KFileItem;
|
||||
|
||||
/**
|
||||
* @brief Abstract class to implement item effects for a Dolphin view.
|
||||
*
|
||||
* Derived classes must implement the following pure virtual methods:
|
||||
* - ItemEffectsManager::setContextPixmap()
|
||||
* - ItemEffectsManager::contextPixmap()
|
||||
* - ItemEffectsManager::firstContext()
|
||||
* - ItemEffectsManager::nextContext()
|
||||
* - ItemEffectsManager::contextFileInfo()
|
||||
*
|
||||
* The item effects manager highlights currently active items and also
|
||||
* respects cutted items. A 'context' is defined as abstract data type,
|
||||
* which usually is represented by a KFileListViewItem or
|
||||
* a KFileIconViewItem.
|
||||
*
|
||||
* In Qt4 the item effects manager should get integrated as part of Interview
|
||||
* and hence no abstract context handling should be necessary anymore. The main
|
||||
* purpose of the current interface is to prevent code duplication as there is
|
||||
* no common model shared by QListView and QIconView of Qt3.
|
||||
*
|
||||
* @see DolphinIconsView
|
||||
* @see DolphinDetailsView
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class ItemEffectsManager
|
||||
{
|
||||
public:
|
||||
ItemEffectsManager();
|
||||
virtual ~ItemEffectsManager();
|
||||
|
||||
/** Is invoked before the items get updated. */
|
||||
virtual void beginItemUpdates() = 0;
|
||||
|
||||
/** Is invoked after the items have been updated. */
|
||||
virtual void endItemUpdates() = 0;
|
||||
|
||||
/**
|
||||
* Increases the size of the current set view mode and refreshes
|
||||
* all views. Derived implementations must invoke the base implementation
|
||||
* if zooming in had been done.
|
||||
*/
|
||||
virtual void zoomIn();
|
||||
|
||||
/**
|
||||
* Decreases the size of the current set view mode and refreshes
|
||||
* all views. Derived implementations must invoke the base implementation
|
||||
* if zooming out had been done.
|
||||
*/
|
||||
virtual void zoomOut();
|
||||
|
||||
/**
|
||||
* Returns true, if zooming in is possible. If false is returned,
|
||||
* the minimal zoom size is possible.
|
||||
*/
|
||||
virtual bool isZoomInPossible() const = 0;
|
||||
|
||||
/**
|
||||
* Returns true, if zooming in is possible. If false is returned,
|
||||
* the minimal zoom size is possible.
|
||||
*/
|
||||
virtual bool isZoomOutPossible() const = 0;
|
||||
|
||||
protected:
|
||||
virtual void setContextPixmap(void* context,
|
||||
const QPixmap& pixmap) = 0;
|
||||
virtual const QPixmap* contextPixmap(void* context) = 0;
|
||||
virtual void* firstContext() = 0;
|
||||
virtual void* nextContext(void* context) = 0;
|
||||
virtual KFileItem* contextFileInfo(void* context) = 0;
|
||||
|
||||
void activateItem(void* context);
|
||||
void resetActivatedItem();
|
||||
void updateDisabledItems();
|
||||
|
||||
private:
|
||||
struct DisabledItem {
|
||||
KURL url;
|
||||
QPixmap pixmap;
|
||||
};
|
||||
|
||||
QPixmap* m_pixmapCopy;
|
||||
KURL m_highlightedURL;
|
||||
|
||||
// contains all items which have been disabled by a 'cut' operation
|
||||
QValueList<DisabledItem> m_disabledItems;
|
||||
|
||||
/** Returns the text for the statusbar for an activated item. */
|
||||
QString statusBarText(KFileItem* fileInfo) const;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,82 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Marcel Juhnke <marrat@marrat.homelinux.org> *
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||
* Copyright (C) 2006 by Stefan Monov <logixoul@gmail.com> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "dolphin.h"
|
||||
#include <kapplication.h>
|
||||
#include <dcopclient.h>
|
||||
#include <kaboutdata.h>
|
||||
#include <kcmdlineargs.h>
|
||||
#include <klocale.h>
|
||||
#include <krun.h>
|
||||
|
||||
static KCmdLineOptions options[] =
|
||||
{
|
||||
{ "+[URL]", I18N_NOOP( "Document to open" ), 0 },
|
||||
KCmdLineLastOption
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
KAboutData about("d3lphin",
|
||||
I18N_NOOP("Dolphin"),
|
||||
"0.9.2",
|
||||
I18N_NOOP("File Manager"),
|
||||
KAboutData::License_GPL,
|
||||
"(C) 2007 Marcel Juhnke");
|
||||
about.setHomepage("https://marrat.homelinux.org/D3lphin");
|
||||
about.setBugAddress("marrat@marrat.homelinux.org");
|
||||
about.addAuthor("Marcel Juhnke", I18N_NOOP("Maintainer and developer"), "marrat@marrat.homelinux.org");
|
||||
about.addAuthor("Michael Austin", I18N_NOOP("Documentation"), "tuxedup@users.sourceforge.net");
|
||||
about.addAuthor("Orville Bennett", I18N_NOOP("Documentation"), "obennett@hartford.edu");
|
||||
about.addCredit("Peter Penz", I18N_NOOP("... for the great original Dolphin"));
|
||||
about.addCredit("Cvetoslav Ludmiloff, Stefan Monov", I18N_NOOP("... for their development on the original Dolphin"));
|
||||
about.addCredit("Aaron J. Seigo", I18N_NOOP("... for the great support and the amazing patches for the orignal Dolphin"));
|
||||
about.addCredit("Patrice Tremblay, Gregor Kalisnik, Filip Brcic, Igor Stepin and Jan Mette", I18N_NOOP("... for their patches"));
|
||||
about.addCredit("Ain, Itai, Ivan, Jannick, Stephane, Patrice, Piotr, Stefano and Power On",
|
||||
I18N_NOOP("... for their translations"));
|
||||
|
||||
KCmdLineArgs::init(argc, argv, &about);
|
||||
KCmdLineArgs::addCmdLineOptions(options);
|
||||
|
||||
KApplication app;
|
||||
Dolphin& mainWin = Dolphin::mainWin();
|
||||
mainWin.show();
|
||||
|
||||
if (app.isRestored()) {
|
||||
int n = 1;
|
||||
while (KMainWindow::canBeRestored(n)){
|
||||
Dolphin::mainWin().restore(n);
|
||||
++n;
|
||||
}
|
||||
} else {
|
||||
KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
|
||||
if (args->count() > 0) {
|
||||
mainWin.activeView()->setURL(args->url(0));
|
||||
|
||||
for (int i = 1; i < args->count(); ++i) {
|
||||
KRun::run("d3lphin", args->url(i));
|
||||
}
|
||||
}
|
||||
args->clear();
|
||||
}
|
||||
|
||||
return app.exec();
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
iconsdir = $(kde_datadir)/d3lphin/icons/hicolor/128x128/actions
|
||||
icons_DATA = preview.png
|
||||
|
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
iconsdir = $(kde_datadir)/d3lphin/icons/hicolor/16x16/actions
|
||||
icons_DATA = preview.png editurl.png
|
||||
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
iconsdir = $(kde_datadir)/d3lphin/icons/hicolor/22x22/actions
|
||||
icons_DATA = preview.png
|
||||
|
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
iconsdir = $(kde_datadir)/d3lphin/icons/hicolor/32x32/actions
|
||||
icons_DATA = preview.png
|
||||
|
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
iconsdir = $(kde_datadir)/d3lphin/icons/hicolor/48x48/actions
|
||||
icons_DATA = preview.png
|
||||
|
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
iconsdir = $(kde_datadir)/d3lphin/icons/hicolor/64x64/actions
|
||||
icons_DATA = preview.png
|
||||
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
SUBDIRS = 128x128 64x64 48x48 32x32 22x22 16x16
|
@ -0,0 +1,56 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "pixmapviewer.h"
|
||||
|
||||
#include <kglobalsettings.h>
|
||||
#include <kiconloader.h>
|
||||
#include <qpainter.h>
|
||||
|
||||
PixmapViewer::PixmapViewer(QWidget* parent) :
|
||||
QWidget(parent)
|
||||
{
|
||||
setMinimumWidth(KIcon::SizeEnormous);
|
||||
setMinimumWidth(KIcon::SizeEnormous);
|
||||
}
|
||||
|
||||
PixmapViewer::~PixmapViewer()
|
||||
{
|
||||
}
|
||||
|
||||
void PixmapViewer::setPixmap(const QPixmap& pixmap)
|
||||
{
|
||||
m_pixmap = pixmap;
|
||||
update();
|
||||
}
|
||||
|
||||
void PixmapViewer::paintEvent(QPaintEvent* event)
|
||||
{
|
||||
QWidget::paintEvent(event);
|
||||
|
||||
QPainter painter;
|
||||
painter.begin(this);
|
||||
const int x = (width() - m_pixmap.width()) / 2;
|
||||
const int y = (height() - m_pixmap.height()) / 2;
|
||||
painter.drawPixmap(x, y, m_pixmap);
|
||||
painter.end();
|
||||
}
|
||||
|
||||
#include "pixmapviewer.moc"
|
@ -0,0 +1,50 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef PIXMAPVIEWER_H
|
||||
#define PIXMAPVIEWER_H
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <qpixmap.h>
|
||||
|
||||
/**
|
||||
* @brief Widget which shows a pixmap centered inside the boundaries.
|
||||
*
|
||||
* @see IconsViewSettingsPage
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class PixmapViewer : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
PixmapViewer(QWidget* parent);
|
||||
virtual ~PixmapViewer();
|
||||
void setPixmap(const QPixmap& pixmap);
|
||||
const QPixmap& pixmap() const { return m_pixmap; }
|
||||
|
||||
protected:
|
||||
virtual void paintEvent(QPaintEvent* event);
|
||||
|
||||
private:
|
||||
QPixmap m_pixmap;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -0,0 +1,80 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "progressindicator.h"
|
||||
#include "dolphin.h"
|
||||
#include "dolphinstatusbar.h"
|
||||
|
||||
ProgressIndicator::ProgressIndicator(const QString& progressText,
|
||||
const QString& finishedText,
|
||||
int operationsCount)
|
||||
: m_showProgress(false),
|
||||
m_operationsCount(operationsCount),
|
||||
m_operationsIndex(0),
|
||||
m_startTime(QTime::currentTime()),
|
||||
m_finishedText(finishedText)
|
||||
{
|
||||
DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar();
|
||||
statusBar->clear();
|
||||
statusBar->setProgressText(progressText);
|
||||
statusBar->setProgress(0);
|
||||
}
|
||||
|
||||
|
||||
ProgressIndicator::~ProgressIndicator()
|
||||
{
|
||||
DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar();
|
||||
statusBar->setProgressText(QString::null);
|
||||
statusBar->setProgress(100);
|
||||
statusBar->setMessage(m_finishedText, DolphinStatusBar::OperationCompleted);
|
||||
|
||||
if (m_showProgress) {
|
||||
Dolphin::mainWin().setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
void ProgressIndicator::execOperation()
|
||||
{
|
||||
++m_operationsIndex;
|
||||
|
||||
if (!m_showProgress) {
|
||||
const int elapsed = m_startTime.msecsTo(QTime::currentTime());
|
||||
if (elapsed > 500) {
|
||||
// the operations took already more than 500 milliseconds,
|
||||
// therefore show a progress indication
|
||||
Dolphin::mainWin().setEnabled(false);
|
||||
m_showProgress = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_showProgress) {
|
||||
const QTime currentTime = QTime::currentTime();
|
||||
if (m_startTime.msecsTo(currentTime) > 100) {
|
||||
m_startTime = currentTime;
|
||||
|
||||
DolphinStatusBar* statusBar = Dolphin::mainWin().activeView()->statusBar();
|
||||
statusBar->setProgress((m_operationsIndex * 100) / m_operationsCount);
|
||||
kapp->processEvents();
|
||||
statusBar->repaint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,78 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef PROGRESSINDICATOR_H
|
||||
#define PROGRESSINDICATOR_H
|
||||
|
||||
#include <qdatetime.h>
|
||||
|
||||
/**
|
||||
* Allows to show a progress of synchronous operations. Sample code:
|
||||
* \code
|
||||
* const int operationsCount = 100;
|
||||
* ProgressIndicator progressIndicator(i18n("Loading..."),
|
||||
* i18n("Loading finished."),
|
||||
* operationsCount);
|
||||
* for (int i = 0; i < operationsCount; ++i) {
|
||||
* progressIndicator.execOperation();
|
||||
* // do synchronous operation...
|
||||
* }
|
||||
* \endcode
|
||||
* The progress indicator takes care to show the progress bar only after
|
||||
* a delay of around 500 milliseconds. This means if all operations are
|
||||
* executing within 500 milliseconds, no progress bar is shown at all.
|
||||
* As soon as the progress bar is shown, the application still may process
|
||||
* events, but the the Dolphin main widget is disabled.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class ProgressIndicator
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @param progressText Text for the progress bar (e. g. "Loading...").
|
||||
* @param finishedText Text which is displayed after the operations have been finished
|
||||
* (e. g. "Loading finished.").
|
||||
* @param operationsCount Number of operations.
|
||||
*/
|
||||
ProgressIndicator(const QString& progressText,
|
||||
const QString& finishedText,
|
||||
int operationsCount);
|
||||
|
||||
/**
|
||||
* Sets the progress to 100 % and displays the 'finishedText' property
|
||||
* in the status bar.
|
||||
*/
|
||||
~ProgressIndicator();
|
||||
|
||||
/**
|
||||
* Increases the progress and should be invoked
|
||||
* before each operation.
|
||||
*/
|
||||
void execOperation();
|
||||
|
||||
private:
|
||||
bool m_showProgress;
|
||||
int m_operationsCount;
|
||||
int m_operationsIndex;
|
||||
QTime m_startTime;
|
||||
QString m_finishedText;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,89 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "renamedialog.h"
|
||||
#include <klocale.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlayout.h>
|
||||
#include <qvbox.h>
|
||||
#include <assert.h>
|
||||
#include <klineedit.h>
|
||||
|
||||
RenameDialog::RenameDialog(const KURL::List& items) :
|
||||
KDialogBase(Plain, i18n("Rename Items"),
|
||||
Ok|Cancel, Ok)
|
||||
{
|
||||
setButtonOK(KGuiItem(i18n("Rename"), "apply"));
|
||||
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(plainPage(), 0, spacingHint());
|
||||
topLayout->setMargin(KDialog::marginHint());
|
||||
|
||||
const int itemCount = items.count();
|
||||
QLabel* editLabel = new QLabel(i18n("Rename the %n selected items to:", "Rename the %n selected items to:", itemCount),
|
||||
plainPage());
|
||||
|
||||
m_lineEdit = new KLineEdit(plainPage());
|
||||
m_newName = i18n("New name #");
|
||||
assert(itemCount > 1);
|
||||
QString postfix(items[0].prettyURL().section('.',1));
|
||||
if (postfix.length() > 0) {
|
||||
// The first item seems to have a postfix (e. g. 'jpg' or 'txt'). Now
|
||||
// check whether all other items have the same postfix. If this is the
|
||||
// case, add this postfix to the name suggestion.
|
||||
postfix.insert(0, '.');
|
||||
for (int i = 1; i < itemCount; ++i) {
|
||||
if (!items[i].prettyURL().contains(postfix)) {
|
||||
// at least one item does not have the same postfix
|
||||
postfix.truncate(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const int selectionLength = m_newName.length();
|
||||
if (postfix.length() > 0) {
|
||||
m_newName.append(postfix);
|
||||
}
|
||||
m_lineEdit->setText(m_newName);
|
||||
m_lineEdit->setSelection(0, selectionLength - 1);
|
||||
m_lineEdit->setFocus();
|
||||
|
||||
QLabel* infoLabel = new QLabel(i18n("(# will be replaced by ascending numbers)"), plainPage());
|
||||
|
||||
topLayout->addWidget(editLabel);
|
||||
topLayout->addWidget(m_lineEdit);
|
||||
topLayout->addWidget(infoLabel);
|
||||
}
|
||||
|
||||
RenameDialog::~RenameDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void RenameDialog::slotOk()
|
||||
{
|
||||
m_newName = m_lineEdit->text();
|
||||
if (m_newName.contains('#') != 1) {
|
||||
m_newName.truncate(0);
|
||||
}
|
||||
|
||||
KDialogBase::slotOk();
|
||||
}
|
||||
|
||||
#include "renamedialog.moc"
|
@ -0,0 +1,67 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef RENAMEDIALOG_H
|
||||
#define RENAMEDIALOG_H
|
||||
|
||||
#include <kdialogbase.h>
|
||||
#include <kurl.h>
|
||||
#include <qstring.h>
|
||||
|
||||
class KLineEdit;
|
||||
|
||||
/**
|
||||
* @brief Dialog for renaming a variable number of files.
|
||||
*
|
||||
* The renaming is not done by the dialog, the invoker
|
||||
* must do this itself:
|
||||
* \code
|
||||
* RenameDialog dialog(...);
|
||||
* if (dialog.exec() == QDialog::Accepted) {
|
||||
* const QString& newName = dialog.newName();
|
||||
* // ... rename items corresponding to the new name
|
||||
* }
|
||||
* \endcode
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class RenameDialog : public KDialogBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
RenameDialog(const KURL::List& items);
|
||||
virtual ~RenameDialog();
|
||||
|
||||
/**
|
||||
* Returns the new name of the items. If the returned string is not empty,
|
||||
* then it is assured that the string contains exactly one character #,
|
||||
* which should be replaced by ascending numbers. An empty string indicates
|
||||
* that the user has removed the # character.
|
||||
*/
|
||||
const QString& newName() const { return m_newName; }
|
||||
|
||||
protected slots:
|
||||
virtual void slotOk();
|
||||
|
||||
private:
|
||||
KLineEdit* m_lineEdit;
|
||||
QString m_newName;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,18 @@
|
||||
servicemenusdir = $(kde_datadir)/d3lphin/servicemenus
|
||||
servicemenus_DATA = compress.desktop amarok_addaspodcast.desktop amarok_append.desktop \
|
||||
amarok_play_audiocd.desktop ark_compress.desktop ark_extract.desktop ark_extract_subdir.desktop \
|
||||
d3lphin_su.desktop edit_as_root.desktop encryptfile.desktop encryptfolder.desktop \
|
||||
floppy_format.desktop imageconverter.desktop installfont.desktop jpegorient.desktop \
|
||||
k3b_audiocd_rip.desktop k3b_cd_copy.desktop k3b_create_audio_cd.desktop \
|
||||
k3b_create_video_cd.desktop k3b_dvd_copy.desktop k3b_handle_empty_cd.desktop \
|
||||
k3b_handle_empty_dvd.desktop k3b_videodvd_rip.desktop k3b_write_bin_image.desktop \
|
||||
k3b_write_iso_image.desktop kdesktopSetAsBackground.desktop konqgwenview.desktop \
|
||||
konsolehere.desktop mail_as_attachment.desktop media_eject.desktop media_mount.desktop \
|
||||
media_realfolder.desktop media_safelyremove.desktop media_unmount.desktop \
|
||||
open_in_digikam.desktop run_as_root.desktop smb2rdc.desktop text-ada-print.desktop \
|
||||
text-c++-print.desktop text-c++h-print.desktop text-ch-print.desktop text-css-print.desktop \
|
||||
text-diff-print.desktop text-html-print.desktop text-java-print.desktop text-log-print.desktop \
|
||||
text-makefile-print.desktop text-pas-print.desktop text-perl-print.desktop text-print.desktop \
|
||||
text-python-print.desktop text-tcl-print.desktop text-tex-print.desktop text-xml-print.desktop \
|
||||
text-xslt-print.desktop
|
||||
|
@ -0,0 +1,18 @@
|
||||
servicemenusdir = $(kde_datadir)/d3lphin/servicemenus
|
||||
servicemenus_DATA = compress.desktop amarok_addaspodcast.desktop amarok_append.desktop \
|
||||
amarok_play_audiocd.desktop ark_compress.desktop ark_extract.desktop ark_extract_subdir.desktop \
|
||||
d3lphin_su.desktop edit_as_root.desktop encryptfile.desktop encryptfolder.desktop \
|
||||
floppy_format.desktop imageconverter.desktop installfont.desktop jpegorient.desktop \
|
||||
k3b_audiocd_rip.desktop k3b_cd_copy.desktop k3b_create_audio_cd.desktop \
|
||||
k3b_create_video_cd.desktop k3b_dvd_copy.desktop k3b_handle_empty_cd.desktop \
|
||||
k3b_handle_empty_dvd.desktop k3b_videodvd_rip.desktop k3b_write_bin_image.desktop \
|
||||
k3b_write_iso_image.desktop kdesktopSetAsBackground.desktop konqgwenview.desktop \
|
||||
konsolehere.desktop mail_as_attachment.desktop media_eject.desktop media_mount.desktop \
|
||||
media_realfolder.desktop media_safelyremove.desktop media_unmount.desktop \
|
||||
open_in_digikam.desktop run_as_root.desktop smb2rdc.desktop text-ada-print.desktop \
|
||||
text-c++-print.desktop text-c++h-print.desktop text-ch-print.desktop text-css-print.desktop \
|
||||
text-diff-print.desktop text-html-print.desktop text-java-print.desktop text-log-print.desktop \
|
||||
text-makefile-print.desktop text-pas-print.desktop text-perl-print.desktop text-print.desktop \
|
||||
text-python-print.desktop text-tcl-print.desktop text-tex-print.desktop text-xml-print.desktop \
|
||||
text-xslt-print.desktop
|
||||
|
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=text/html,text/xml,application/xml,text/rss
|
||||
Actions=addAsPodcast
|
||||
[Desktop Action addAsPodcast]
|
||||
Name=Add as podcast to amaroK
|
||||
Name[de]=Als Podcast zu amaroK hinzufügen
|
||||
Icon=amarok
|
||||
Exec=dcop amarok playlistbrowser addPodcast %u
|
@ -0,0 +1,21 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=inode/directory
|
||||
Actions=CompressZip;CompressTarGz;CompressTarBz2
|
||||
X-KDE-Priority=TopLevel
|
||||
X-KDE-Submenu=Compress
|
||||
|
||||
[Desktop Action CompressZip]
|
||||
Name=Zip Archive
|
||||
Icon=ark
|
||||
Exec=ark --add-to %u %u.zip
|
||||
|
||||
[Desktop Action CompressTarGz]
|
||||
Name=Gzipped Tar Archive
|
||||
Icon=ark
|
||||
Exec=ark --add-to %u %u.tar.gz
|
||||
|
||||
[Desktop Action CompressTarBz2]
|
||||
Name=Bzip2 Tar Archive
|
||||
Icon=ark
|
||||
Exec=ark --add-to %u %u.tar.bz2
|
||||
|
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
X-SuSE-translate=true
|
||||
Encoding=UTF-8
|
||||
ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,application/x-tgz,application/x-tbz,application/x-tbz2,application/x-zip,application/x-bzip,application/x-tzo,application/x-lzop,application/x-rar,application/x-rar-compressed,application/x-zoo,application/x-tarz,application/x-archive,application/x-bzip2,application/x-jar,application/x-deb,application/x-ace,application/x-7z,application/x-arc,application/x-arj,application/x-compress,application/x-cpio,application/x-pak
|
||||
Actions=extractHere
|
||||
|
||||
[Desktop Action extractHere]
|
||||
Name=Extract Here
|
||||
Name[de]=Hierher entpacken
|
||||
Exec=ark --extract-to %d %u
|
||||
Icon=ark
|
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
X-SuSE-translate=true
|
||||
Encoding=UTF-8
|
||||
ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,application/x-tgz,application/x-tbz,application/x-tbz2,application/x-zip,application/x-bzip,application/x-tzo,application/x-lzop,application/x-rar,application/x-rar-compressed,application/x-zoo,application/x-tarz,application/x-archive,application/x-bzip2,application/x-jar,application/x-deb,application/x-ace,application/x-7z,application/x-arc,application/x-arj,application/x-compress,application/x-cpio,application/x-pak
|
||||
Actions=ExtractSubdir
|
||||
|
||||
[Desktop Action ExtractSubdir]
|
||||
Name=Extract to subdirectory
|
||||
Name[de]=In Unterordner entpacken
|
||||
Icon=ark
|
||||
Exec=ark -caption "%c" %i %m --guess-name --extract-to "%d" "%u"
|
@ -0,0 +1,21 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=all/allfiles
|
||||
Actions=CompressZip;CompressTarGz;CompressTarBz2
|
||||
X-KDE-Priority=TopLevel
|
||||
X-KDE-Submenu=Compress
|
||||
|
||||
[Desktop Action CompressZip]
|
||||
Name=Zip Archive
|
||||
Icon=ark
|
||||
Exec=ark --add-to %u %u.zip
|
||||
|
||||
[Desktop Action CompressTarGz]
|
||||
Name=Gzipped Tar Archive
|
||||
Icon=ark
|
||||
Exec=ark --add-to %u %u.tar.gz
|
||||
|
||||
[Desktop Action CompressTarBz2]
|
||||
Name=Bzip2 Tar Archive
|
||||
Icon=ark
|
||||
Exec=ark --add-to %u %u.tar.bz2
|
||||
|
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=inode/directory
|
||||
Actions=D3lphinSU;
|
||||
|
||||
[Desktop Action D3lphinSU]
|
||||
ServiceTypes=inode/directory
|
||||
Name=Open as Root
|
||||
Name[de]=Öffne als Root
|
||||
Name[ru]=Открыть под root
|
||||
Icon=d3lphin
|
||||
Exec=kdesu -c "d3lphin '%U'"
|
@ -0,0 +1,12 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=text/*,application/x-desktop
|
||||
Actions=Editassu
|
||||
|
||||
[Desktop Action Editassu]
|
||||
Name=Edit as Root
|
||||
Name[it]=Edita come Root
|
||||
Name[fr]=Editer en tant que Root
|
||||
Name[es]=Editar como Root
|
||||
Name[de]=Als root bearbeiten
|
||||
Icon=kfm
|
||||
Exec=kdesu "kwrite" "%U"
|
@ -0,0 +1,59 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=all/allfiles
|
||||
ExcludeServiceTypes=kdedevice/*
|
||||
Actions=encrypt
|
||||
|
||||
[Desktop Action encrypt]
|
||||
Name=Encrypt File
|
||||
Name[ar]=تشفير ملف
|
||||
Name[bg]=Шифроване на файл
|
||||
Name[bs]=Šifriraj datoteku
|
||||
Name[ca]=Xifra fitxer
|
||||
Name[cs]=Zašifrovat soubor
|
||||
Name[cy]=Cêl-ysgrifo Ffeil
|
||||
Name[da]=Indkod fil
|
||||
Name[de]=Datei verschlüsseln
|
||||
Name[el]=Κρυπτογράφηση αρχείου
|
||||
Name[es]=Cifrar archivo
|
||||
Name[et]=Krüpti fail
|
||||
Name[eu]=Fitxategiak Zifratu
|
||||
Name[fa]=رمزبندی پرونده
|
||||
Name[fi]=Salaa tiedosto
|
||||
Name[fr]=Chiffrer le fichier
|
||||
Name[ga]=Criptigh Comhad
|
||||
Name[he]=הצפן קובץ
|
||||
Name[hi]=एनक्रिप्ट फ़ाइल
|
||||
Name[hu]=Fájl titkosítása
|
||||
Name[is]=Dulrita skrá
|
||||
Name[it]=Cifratura file
|
||||
Name[ja]=ファイルを暗号化
|
||||
Name[kk]=Файлды шифрлау
|
||||
Name[km]=អ៊ិនគ្រីបឯកសារ
|
||||
Name[lt]=Šifruoti bylą
|
||||
Name[mk]=Криптирај датотеки
|
||||
Name[nb]=Krypter fil
|
||||
Name[nds]=Dateiverslöteln
|
||||
Name[ne]=फाइल गुप्तीकरण गर्नुहोस्
|
||||
Name[nl]=Bestand versleutelen
|
||||
Name[nn]=Krypter fil
|
||||
Name[pa]=ਇੰਕਰਿਪਟ ਫਾਇਲ
|
||||
Name[pl]=Zaszyfruj plik
|
||||
Name[pt]=Cifrar Ficheiro
|
||||
Name[pt_BR]=Criptografar Arquivo
|
||||
Name[ro]=Criptează fişierul
|
||||
Name[ru]=Зашифровать файл
|
||||
Name[sk]=Šifrovať súbor
|
||||
Name[sl]=Šifriraj datoteko
|
||||
Name[sr]=Шифруј фајл
|
||||
Name[sr@Latn]=Šifruj fajl
|
||||
Name[sv]=Kryptera fil
|
||||
Name[ta]=சங்கேத கோப்பு
|
||||
Name[tg]=Рамзкунонии Файл
|
||||
Name[tr]=Dosya Şifrele
|
||||
Name[uk]=Зашифрувати файл
|
||||
Name[wa]=Ecripter fitchî
|
||||
Name[zh_CN]=加密文件
|
||||
Name[zh_TW]=加密檔案
|
||||
Icon=kgpg
|
||||
Exec=kgpg -e %F
|
||||
|
@ -0,0 +1,36 @@
|
||||
[Desktop Action Format]
|
||||
Exec=kfloppy %u
|
||||
Icon=kfloppy
|
||||
Name=Format
|
||||
Name[bg]=Форматиране
|
||||
Name[br]=Furmadiñ
|
||||
Name[ca]=Dona format
|
||||
Name[cs]=Formátovat
|
||||
Name[cy]=Fformat
|
||||
Name[de]=Formatieren
|
||||
Name[eo]=Formato
|
||||
Name[es]=Formatear
|
||||
Name[fr]=Formater
|
||||
Name[ga]=Formáid
|
||||
Name[it]=Formatta
|
||||
Name[ja]=フォーマット
|
||||
Name[lt]=Formatas
|
||||
Name[nl]=Formatteren
|
||||
Name[pa]=ਫਾਰਮਿਟ
|
||||
Name[pl]=Formatuj
|
||||
Name[pt]=Formatar
|
||||
Name[pt_BR]=Formatar
|
||||
Name[ru]=Форматирование дискет
|
||||
Name[rw]=Imiterere
|
||||
Name[sr]=Форматирај
|
||||
Name[sr@Latn]=Formatiraj
|
||||
Name[sv]=Formatera
|
||||
Name[uk]=Форматування
|
||||
Name[xx]=xxFormatxx
|
||||
Name[zh_CN]=格式化
|
||||
|
||||
[Desktop Entry]
|
||||
Actions=Format;
|
||||
ServiceTypes=media/floppy_unmounted,media/floppy5_unmounted
|
||||
X-KDE-Priority=TopLevel
|
||||
X-KDE-MediaNotifierHide=true
|
@ -0,0 +1,143 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=application/x-font-ttf,application/x-font-type1,application/x-font-speedo,application/x-font-bdf,application/x-font-pcf,application/x-font-snf,application/x-font-otf,application/x-font-ttc,application/x-afm
|
||||
Actions=installFont;
|
||||
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
[Desktop Action installFont]
|
||||
Name=Install
|
||||
Name[af]=Installeer
|
||||
Name[be]=Усталяваць
|
||||
Name[bg]=Инсталиране
|
||||
Name[bn]=ইনস্টল
|
||||
Name[br]=Staliañ
|
||||
Name[bs]=Instaliraj
|
||||
Name[ca]=Instal·la
|
||||
Name[cs]=Instalovat
|
||||
Name[cy]=Gosod
|
||||
Name[da]=Installér
|
||||
Name[de]=Installieren
|
||||
Name[el]=Εγκατάσταση
|
||||
Name[eo]=Instalu
|
||||
Name[es]=Instalar
|
||||
Name[et]=Paigaldamine
|
||||
Name[eu]=Instalatu
|
||||
Name[fa]=نصب
|
||||
Name[fi]=Asenna
|
||||
Name[fr]=Installer
|
||||
Name[fy]=Ynstallearje
|
||||
Name[ga]=Suiteáil
|
||||
Name[gl]=Instalar
|
||||
Name[he]=התקנה
|
||||
Name[hi]=संस्थापित
|
||||
#SUSE-Overwrite Name[hr]=Instaliraj
|
||||
Name[hu]=Telepítő
|
||||
Name[is]=Setja upp
|
||||
Name[it]=Installa
|
||||
Name[ja]=インストール
|
||||
Name[km]=ដំឡើង
|
||||
Name[lt]=Įdiegti
|
||||
Name[lv]=Instalēt
|
||||
Name[mk]=Инсталирај
|
||||
Name[ms]=Pasang
|
||||
Name[mt]=Installa
|
||||
Name[nb]=Installer
|
||||
Name[nds]=Installeren
|
||||
Name[nl]=Installeren
|
||||
Name[nn]=Installer
|
||||
Name[pa]=ਇੰਸਟਾਲ
|
||||
#SUSE-Overwrite Name[pl]=Instaluj
|
||||
Name[pl]=Zainstaluj
|
||||
Name[pt]=Instalar
|
||||
Name[pt_BR]=Instalar
|
||||
Name[ro]=Instalare
|
||||
Name[ru]=Установка
|
||||
Name[rw]=Kwinjizaporogaramu
|
||||
Name[se]=Sajáiduhte
|
||||
Name[sk]=Inštalácia
|
||||
Name[sl]=Namesti
|
||||
Name[sr]=Инсталирај
|
||||
Name[sr@Latn]=Instaliraj
|
||||
Name[sv]=Installera
|
||||
Name[ta]=நிறுவி
|
||||
Name[tg]=Гузоштан
|
||||
Name[th]=ติดตั้ง
|
||||
Name[tr]=Kur
|
||||
Name[tt]=Quyu
|
||||
Name[uk]=Встановлення
|
||||
Name[uz]=Ўрнатиш
|
||||
#SUSE-Overwrite Name[vi]=Cài đặt
|
||||
Name[zh_CN]=安装
|
||||
Name[zh_TW]=安裝
|
||||
Icon=fonts
|
||||
Exec=kfmclient copy %U fonts:/
|
||||
|
@ -0,0 +1,13 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Actions=OpenISO
|
||||
ServiceTypes=inode/blockdevice,application/x-iso
|
||||
|
||||
[Desktop Action OpenISO]
|
||||
Comment=ISO9660 View
|
||||
Comment[hu]=ISO9660 Nézet
|
||||
Comment[fr]=Lecteur ISO9660
|
||||
Icon=cd
|
||||
Name=ISO9660 View
|
||||
Name[hu]=ISO9660 Nézet
|
||||
Name[fr]=Lecteur ISO9660
|
@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
ServiceTypes=all/allfiles
|
||||
Actions=mail_as_attachment
|
||||
|
||||
[Desktop Action mail_as_attachment]
|
||||
Name=Mail as Attachment...
|
||||
Name[de]=Verschicken als Anhang...
|
||||
Icon=mail_send
|
||||
Exec=kmail --attach %U
|
@ -0,0 +1,155 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=media/cdrom_unmounted,media/cdwriter_unmounted,media/dvd_unmounted,media/floppy5_unmounted,media/floppy_unmounted,media/hdd_unmounted,media/nfs_unmounted,media/removable_unmounted,media/smb_unmounted,media/zip_unmounted,media/camera_unmounted
|
||||
Actions=MediaMount;
|
||||
X-KDE-Priority=TopLevel
|
||||
X-KDE-MediaNotifierHide=true
|
||||
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
[Desktop Action MediaMount]
|
||||
Name=Mount
|
||||
Name[af]=Koppel
|
||||
Name[ar]=حمّل
|
||||
Name[az]=Bağla
|
||||
Name[bg]=Монтиране
|
||||
Name[bn]=মাউন্ট
|
||||
Name[br]=Marc'hañ
|
||||
Name[bs]=Montiraj
|
||||
Name[ca]=Munta
|
||||
Name[cs]=Připojit
|
||||
Name[cy]=Gosod
|
||||
Name[da]=Montér
|
||||
Name[de]=Laufwerk einbinden
|
||||
Name[el]=Προσάρτηση
|
||||
Name[eo]=Kroĉo
|
||||
Name[es]=Montar
|
||||
Name[et]=Ühenda
|
||||
Name[eu]=Muntatu
|
||||
Name[fa]=سوارکردن
|
||||
Name[fi]=Liitä
|
||||
Name[fr]=Monter
|
||||
Name[fy]=Oankeppelje (mount)
|
||||
Name[ga]=Feistigh
|
||||
Name[gl]=Montar
|
||||
Name[he]=חבר
|
||||
Name[hi]=माउन्ट
|
||||
Name[hr]=Montiraj
|
||||
Name[hsb]=montować
|
||||
Name[hu]=Csatlakoztatás
|
||||
Name[is]=Tengja
|
||||
Name[it]=Monta
|
||||
Name[ja]=マウント
|
||||
#SUSE-Overwrite Name[km]=រៀបចំ
|
||||
Name[km]=ម៉ោន
|
||||
Name[lo]=ຈໍພາບ
|
||||
Name[lt]=Montuoti
|
||||
Name[lv]=Piemontēt
|
||||
Name[mk]=Монтирај
|
||||
Name[mn]=Залгах
|
||||
Name[ms]=Lekap
|
||||
Name[mt]=Immonta
|
||||
Name[nb]=Monter
|
||||
Name[nds]=Inhangen
|
||||
Name[nl]=Aankoppelen (mount)
|
||||
Name[nn]=Monter
|
||||
Name[nso]=Nameletsa
|
||||
#SUSE-Overwrite Name[pa]=ਮਾਊਟ
|
||||
Name[pa]=ਮਾਊਂਟ
|
||||
Name[pl]=Zamontuj
|
||||
Name[pt]=Montar
|
||||
Name[pt_BR]=Montar
|
||||
Name[ro]=Montează
|
||||
Name[ru]=Монтировать
|
||||
Name[rw]=Gushyiramo
|
||||
Name[se]=Čana
|
||||
Name[sk]=Pripojiť
|
||||
Name[sl]=Priklopi
|
||||
Name[sr]=Монтирај
|
||||
Name[sr@Latn]=Montiraj
|
||||
Name[sv]=Montera
|
||||
Name[ta]=ஏற்று
|
||||
Name[tg]=Васл кунӣ
|
||||
Name[th]=เม้าทน์
|
||||
Name[tr]=Bağla
|
||||
Name[tt]=Bäyläp quy
|
||||
Name[uk]=Змонтувати
|
||||
Name[uz]=Улаш
|
||||
Name[ven]=Gonya
|
||||
Name[vi]=Gắn kết
|
||||
Name[wa]=Monter
|
||||
Name[xh]=Layisha
|
||||
Name[zh_CN]=挂载
|
||||
Name[zh_TW]=掛載
|
||||
Name[zu]=Yenyusa
|
||||
Exec=kio_media_mounthelper -m %u
|
||||
|
||||
|
@ -0,0 +1,114 @@
|
||||
[Desktop Entry]
|
||||
ServiceTypes=media/cdrom_mounted,media/cdwriter_mounted,media/dvd_mounted,media/floppy5_mounted,media/floppy_mounted,media/hdd_mounted,media/nfs_mounted,media/smb_mounted,media/removable_mounted,media/zip_mounted
|
||||
Actions=MediaRealFolder
|
||||
X-KDE-Priority=TopLevel
|
||||
X-KDE-MediaNotifierHide=true
|
||||
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
X-SuSE-translate=true
|
||||
[Desktop Action MediaRealFolder]
|
||||
Name=Open Medium System Folder
|
||||
Name[ca]=Obre la carpeta de mitjans del sistema
|
||||
Name[cs]=Otevřít systémovou složku média
|
||||
Name[da]=Åbn medium-system-mappen
|
||||
Name[de]=Systemordner des Mediums öffnen
|
||||
Name[el]=Άνοιγμα του φακέλου συστήματος του μέσου
|
||||
Name[es]=Abrir la carpeta del administrador de medios...
|
||||
Name[et]=Ava andmekandja süsteemi kataloog
|
||||
Name[eu]=Ireki euskarriaren kudeatzailea
|
||||
Name[fi]=Avaa mediajärjestelmän kansio
|
||||
Name[fr]=Dossier système d'ouverture de média
|
||||
Name[he]=פתח את תיקיית מדיית המערכת
|
||||
Name[hu]=A médiaanyagok rendszerkönyvtárának megnyitása
|
||||
Name[is]=Opin miðils kerfismappa
|
||||
Name[it]=Cartella di sistema per l'apertura di supporti
|
||||
Name[lt]=Atverti sisteminį įrenginio aplanką
|
||||
Name[nb]=Åpne systemmappe for medie
|
||||
Name[nl]=Systeemmap medium openen
|
||||
#SUSE-Overwrite Name[pa]=ਮੀਡੀਅਮ ਸਿਸਟਮ ਫੋਲਡਰ ਖੋਲੋ
|
||||
Name[pa]=ਮੀਡਿਅਮ ਸਿਸਟਮ ਫੋਲਡਰ ਖੋਲੋ
|
||||
Name[pl]=Otwórz folder systemowy mediów
|
||||
Name[pt]=Pasta de Sistema Média Aberto
|
||||
Name[pt_BR]=Abrir a Pasta de Mídias do Sistema
|
||||
Name[ru]=Открыть системную папку
|
||||
Name[sr]=Отвори системску фасциклу медијума
|
||||
Name[sr@Latn]=Otvori sistemsku fasciklu medijuma
|
||||
Name[sv]=Öppna mediumsystemkatalog
|
||||
Name[uk]=Відкрити системну теку носія
|
||||
Name[zh_CN]=打开介质系统文件夹
|
||||
Exec=kio_media_realfolder %u
|
||||
|
||||
|
||||
Name[bg]=Системна папка на Open Medium
|
||||
Name[ja]=オープン メディアシステムフォルダ
|
||||
Name[km]=បើកថតប្រព័ន្ធមេឌៀ
|
||||
Name[zh_TW]=開啟媒體系統資料夾
|
@ -0,0 +1,29 @@
|
||||
[Desktop Action OpenDigikam]
|
||||
Exec=digikam --download-from %u
|
||||
Icon=digikam
|
||||
Name=Open in Digikam
|
||||
|
||||
Name[bg]=Отваряне в digiKam
|
||||
Name[cs]=Otevřít v digiKamu
|
||||
Name[el]=Άνοιξε στο Digikam
|
||||
Name[es]=Abrir en digiKam
|
||||
Name[fi]=Avaa digiKamissa
|
||||
Name[fr]=Ouvert dans Digikam
|
||||
Name[hu]=Megnyitás Digikammel
|
||||
Name[ja]=Digikamでオープン
|
||||
Name[km]=បើកក្នុង Digikam
|
||||
Name[nb]=Åpne i digiKam
|
||||
Name[nl]=Openen in digiKam
|
||||
Name[pa]=ਡਿਜ਼ੀਕੈਮ 'ਚ ਖੋਲੋ
|
||||
Name[pl]=Otwórz w Digikam
|
||||
Name[pt]=Abrir no DigiKam
|
||||
Name[pt_BR]=Aberto no Digikam
|
||||
Name[sv]=Öppna med Digikam
|
||||
Name[uk]=Відкрити в Digikam
|
||||
Name[zh_CN]=在 Digikam 中打开
|
||||
Name[zh_TW]=在 Digikam 中開啟
|
||||
[Desktop Entry]
|
||||
Actions=OpenDigikam;
|
||||
ServiceTypes=media/gphoto2camera,media/camera_mounted,media/camera_unmounted
|
||||
|
||||
X-SuSE-translate=true
|
@ -0,0 +1,33 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "settingspagebase.h"
|
||||
|
||||
SettingsPageBase::SettingsPageBase(QWidget* parent) :
|
||||
QWidget(parent)
|
||||
{
|
||||
}
|
||||
|
||||
SettingsPageBase::~SettingsPageBase()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#include "settingspagebase.moc"
|
@ -0,0 +1,46 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef SETTINGSPAGEBASE_H
|
||||
#define SETTINGSPAGEBASE_H
|
||||
|
||||
#include <qwidget.h>
|
||||
|
||||
/**
|
||||
* @brief Base class for the settings pages of the Dolphin settings dialog.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class SettingsPageBase : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SettingsPageBase(QWidget* parent);
|
||||
virtual ~SettingsPageBase();
|
||||
|
||||
/**
|
||||
* Must be implemented by a derived class to
|
||||
* persistently store the settings.
|
||||
*/
|
||||
virtual void applySettings() = 0;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,36 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Cvetoslav Ludmiloff <ludmiloff@gmail.com> *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "sidebarpage.h"
|
||||
#include "dolphin.h"
|
||||
|
||||
SidebarPage::SidebarPage(QWidget* parent) :
|
||||
QWidget(parent)
|
||||
{
|
||||
connect(&Dolphin::mainWin(), SIGNAL(activeViewChanged()),
|
||||
this, SLOT(activeViewChanged()));
|
||||
}
|
||||
|
||||
SidebarPage::~SidebarPage()
|
||||
{
|
||||
}
|
||||
|
||||
void SidebarPage::activeViewChanged()
|
||||
{
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Cvetoslav Ludmiloff <ludmiloff@gmail.com> *
|
||||
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _SIDEBARPAGE_H_
|
||||
#define _SIDEBARPAGE_H_
|
||||
|
||||
#include <qwidget.h>
|
||||
|
||||
class Sidebar;
|
||||
|
||||
/**
|
||||
* @brief Base widget for all pages that can be embedded into the Sidebar.
|
||||
*
|
||||
* TODO
|
||||
*/
|
||||
class SidebarPage : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SidebarPage(QWidget* parent);
|
||||
virtual ~SidebarPage();
|
||||
|
||||
protected slots:
|
||||
/**
|
||||
* Is invoked whenever the active view from Dolphin has been changed.
|
||||
* The active view can be retrieved by Dolphin::mainWin().activeView();
|
||||
*/
|
||||
virtual void activeViewChanged();
|
||||
};
|
||||
|
||||
#endif // _SIDEBARPAGE_H_
|
@ -0,0 +1,190 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Marcel Juhnke *
|
||||
* marrat@marrat.homelinux.org *
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qlayout.h>
|
||||
#include <qpixmap.h>
|
||||
#include <kiconloader.h>
|
||||
#include <klocale.h>
|
||||
#include <qcombobox.h>
|
||||
|
||||
#include "dolphinsettings.h"
|
||||
#include "sidebarssettings.h"
|
||||
#include "bookmarkssidebarpage.h"
|
||||
#include "infosidebarpage.h"
|
||||
#include "sidebars.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
/**
|
||||
*
|
||||
* @param parent
|
||||
*/
|
||||
leftSidebar::leftSidebar(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
m_pagesSelector(0),
|
||||
m_page(0),
|
||||
m_layout(0)
|
||||
{
|
||||
m_layout = new QVBoxLayout(this);
|
||||
|
||||
m_pagesSelector = new QComboBox(this);
|
||||
m_pagesSelector->insertItem(i18n("Bookmarks"));
|
||||
m_pagesSelector->insertItem(i18n("Information"));
|
||||
|
||||
// Assure that the combo box has the same height as the URL navigator for
|
||||
// a clean layout.
|
||||
// TODO: the following 2 lines have been copied from the URLNavigator
|
||||
// constructor (-> provide a shared height setting?)
|
||||
//QFontMetrics fontMetrics(font());
|
||||
QFontMetrics fontMetrics(font());
|
||||
m_pagesSelector->setMinimumHeight(fontMetrics.height() + 8);
|
||||
|
||||
leftSidebarSettings* settings = DolphinSettings::instance().leftsidebar();
|
||||
const int selectedIndex = indexForName(settings->selectedPage());
|
||||
m_pagesSelector->setCurrentItem(selectedIndex);
|
||||
m_layout->addWidget(m_pagesSelector);
|
||||
|
||||
createPage(selectedIndex);
|
||||
|
||||
connect(m_pagesSelector, SIGNAL(activated(int)),
|
||||
this, SLOT(createPage(int)));
|
||||
}
|
||||
|
||||
leftSidebar::~leftSidebar()
|
||||
{
|
||||
}
|
||||
|
||||
QSize leftSidebar::sizeHint() const
|
||||
{
|
||||
QSize size(QWidget::sizeHint());
|
||||
|
||||
leftSidebarSettings* settings = DolphinSettings::instance().leftsidebar();
|
||||
size.setWidth(settings->width());
|
||||
return size;
|
||||
}
|
||||
|
||||
void leftSidebar::createPage(int index)
|
||||
{
|
||||
if (m_page != 0) {
|
||||
m_page->deleteLater();
|
||||
m_page = 0;
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 0: m_page = new BookmarksSidebarPage(this); break;
|
||||
case 1: m_page = new InfoSidebarPage(this); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
m_layout->addWidget(m_page);
|
||||
m_page->show();
|
||||
|
||||
leftSidebarSettings* settings = DolphinSettings::instance().leftsidebar();
|
||||
settings->setSelectedPage(m_pagesSelector->text(index));
|
||||
}
|
||||
|
||||
int leftSidebar::indexForName(const QString& name) const
|
||||
{
|
||||
const int count = m_pagesSelector->count();
|
||||
for (int i = 0; i < count; ++i) {
|
||||
if (m_pagesSelector->text(i) == name) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
rightSidebar::rightSidebar(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
m_pagesSelector(0),
|
||||
m_page(0),
|
||||
m_layout(0)
|
||||
{
|
||||
m_layout = new QVBoxLayout(this);
|
||||
|
||||
m_pagesSelector = new QComboBox(this);
|
||||
m_pagesSelector->insertItem(i18n("Bookmarks"));
|
||||
m_pagesSelector->insertItem(i18n("Information"));
|
||||
|
||||
// Assure that the combo box has the same height as the URL navigator for
|
||||
// a clean layout.
|
||||
// TODO: the following 2 lines have been copied from the URLNavigator
|
||||
// constructor (-> provide a shared height setting?)
|
||||
QFontMetrics fontMetrics(font());
|
||||
m_pagesSelector->setMinimumHeight(fontMetrics.height() + 8);
|
||||
|
||||
rightSidebarSettings* settings = DolphinSettings::instance().rightsidebar();
|
||||
const int selectedIndex = indexForName(settings->selectedPage());
|
||||
m_pagesSelector->setCurrentItem(selectedIndex);
|
||||
m_layout->addWidget(m_pagesSelector);
|
||||
|
||||
createPage(selectedIndex);
|
||||
|
||||
connect(m_pagesSelector, SIGNAL(activated(int)),
|
||||
this, SLOT(createPage(int)));
|
||||
}
|
||||
|
||||
rightSidebar::~rightSidebar()
|
||||
{
|
||||
}
|
||||
|
||||
QSize rightSidebar::sizeHint() const
|
||||
{
|
||||
QSize size(QWidget::sizeHint());
|
||||
|
||||
rightSidebarSettings* settings = DolphinSettings::instance().rightsidebar();
|
||||
size.setWidth(settings->width());
|
||||
return size;
|
||||
}
|
||||
|
||||
void rightSidebar::createPage(int index)
|
||||
{
|
||||
if (m_page != 0) {
|
||||
m_page->deleteLater();
|
||||
m_page = 0;
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 0: m_page = new BookmarksSidebarPage(this); break;
|
||||
case 1: m_page = new InfoSidebarPage(this); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
m_layout->addWidget(m_page);
|
||||
m_page->show();
|
||||
|
||||
rightSidebarSettings* settings = DolphinSettings::instance().rightsidebar();
|
||||
settings->setSelectedPage(m_pagesSelector->text(index));
|
||||
}
|
||||
|
||||
int rightSidebar::indexForName(const QString& name) const
|
||||
{
|
||||
const int count = m_pagesSelector->count();
|
||||
for (int i = 0; i < count; ++i) {
|
||||
if (m_pagesSelector->text(i) == name) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Marcel Juhnke *
|
||||
* marrat@marrat.homelinux.org *
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _SIDEBARS_H_
|
||||
#define _SIDEBARS_H_
|
||||
|
||||
#include <qwidget.h>
|
||||
|
||||
|
||||
class KURL;
|
||||
class QComboBox;
|
||||
class QVBoxLayout;
|
||||
class SidebarPage;
|
||||
|
||||
class leftSidebar : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
leftSidebar(QWidget* parent);
|
||||
virtual ~leftSidebar();
|
||||
|
||||
virtual QSize sizeHint() const;
|
||||
|
||||
signals:
|
||||
/**
|
||||
* The user selected an item on sidebar widget and item has
|
||||
* URL property, so inform the parent to go to this URL;
|
||||
*/
|
||||
void urlChanged(const KURL& url);
|
||||
|
||||
private slots:
|
||||
void createPage(int index);
|
||||
|
||||
private:
|
||||
int indexForName(const QString& name) const;
|
||||
|
||||
QComboBox* m_pagesSelector;
|
||||
SidebarPage* m_page;
|
||||
QVBoxLayout* m_layout;
|
||||
};
|
||||
|
||||
class rightSidebar : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
rightSidebar(QWidget* parent);
|
||||
virtual ~rightSidebar();
|
||||
|
||||
virtual QSize sizeHint() const;
|
||||
|
||||
signals:
|
||||
/**
|
||||
* The user selected an item on sidebar widget and item has
|
||||
* URL property, so inform the parent togo to this URL;
|
||||
*/
|
||||
void urlChanged(const KURL& url);
|
||||
|
||||
private slots:
|
||||
void createPage(int index);
|
||||
|
||||
private:
|
||||
int indexForName(const QString& name) const;
|
||||
|
||||
QComboBox* m_pagesSelector;
|
||||
SidebarPage* m_page;
|
||||
QVBoxLayout* m_layout;
|
||||
};
|
||||
|
||||
#endif // _SIDEBARS_H_
|
@ -0,0 +1,96 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "sidebarssettings.h"
|
||||
#include <kapplication.h>
|
||||
#include <kconfig.h>
|
||||
#include <assert.h>
|
||||
|
||||
leftSidebarSettings::leftSidebarSettings() :
|
||||
m_visible(true),
|
||||
m_width(0)
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("leftSidebar");
|
||||
|
||||
m_visible = config->readBoolEntry("Visible", true);
|
||||
m_width = config->readNumEntry("Width", 150);
|
||||
m_selectedPage = config->readEntry("Selected Page", "Bookmarks");
|
||||
}
|
||||
|
||||
leftSidebarSettings::~leftSidebarSettings()
|
||||
{
|
||||
}
|
||||
|
||||
void leftSidebarSettings::setWidth(int width)
|
||||
{
|
||||
if (width < 50) {
|
||||
// prevent that a sidebar gets width which makes
|
||||
// it look invisible
|
||||
width = 50;
|
||||
}
|
||||
m_width = width;
|
||||
}
|
||||
|
||||
void leftSidebarSettings::save()
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("leftSidebar");
|
||||
|
||||
config->writeEntry("Visible", m_visible);
|
||||
config->writeEntry("Width", m_width);
|
||||
config->writeEntry("Selected Page", m_selectedPage);
|
||||
}
|
||||
|
||||
rightSidebarSettings::rightSidebarSettings() :
|
||||
m_visible(true),
|
||||
m_width(0)
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("rightSidebar");
|
||||
|
||||
m_visible = config->readBoolEntry("Visible", true);
|
||||
m_width = config->readNumEntry("Width", 150);
|
||||
m_selectedPage = config->readEntry("Selected Page", "Bookmarks");
|
||||
}
|
||||
|
||||
rightSidebarSettings::~rightSidebarSettings()
|
||||
{
|
||||
}
|
||||
|
||||
void rightSidebarSettings::setWidth(int width)
|
||||
{
|
||||
if (width < 50) {
|
||||
// prevent that a sidebar gets width which makes
|
||||
// it look invisible
|
||||
width = 50;
|
||||
}
|
||||
m_width = width;
|
||||
}
|
||||
|
||||
void rightSidebarSettings::save()
|
||||
{
|
||||
KConfig* config = kapp->config();
|
||||
config->setGroup("rightSidebar");
|
||||
|
||||
config->writeEntry("Visible", m_visible);
|
||||
config->writeEntry("Width", m_width);
|
||||
config->writeEntry("Selected Page", m_selectedPage);
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef SIDEBARSETTINGS_H
|
||||
#define SIDEBARSETTINGS_H
|
||||
|
||||
#include <qstring.h>
|
||||
#include <dolphinsettingsbase.h>
|
||||
|
||||
|
||||
class leftSidebarSettings
|
||||
{
|
||||
public:
|
||||
leftSidebarSettings();
|
||||
virtual ~leftSidebarSettings();
|
||||
void setVisible(bool visible) { m_visible = visible; }
|
||||
bool isVisible() const { return m_visible; }
|
||||
|
||||
void setWidth(int width);
|
||||
int width() const { return m_width; }
|
||||
|
||||
void setSelectedPage(const QString& pageName) { m_selectedPage = pageName; }
|
||||
const QString& selectedPage() const { return m_selectedPage; }
|
||||
|
||||
virtual void save();
|
||||
|
||||
protected:
|
||||
bool m_visible;
|
||||
int m_width;
|
||||
QString m_selectedPage;
|
||||
};
|
||||
|
||||
class rightSidebarSettings
|
||||
{
|
||||
public:
|
||||
rightSidebarSettings();
|
||||
virtual ~rightSidebarSettings();
|
||||
void setVisible(bool visible) { m_visible = visible; }
|
||||
bool isVisible() const { return m_visible; }
|
||||
|
||||
void setWidth(int width);
|
||||
int width() const { return m_width; }
|
||||
|
||||
void setSelectedPage(const QString& pageName) { m_selectedPage = pageName; }
|
||||
const QString& selectedPage() const { return m_selectedPage; }
|
||||
|
||||
virtual void save();
|
||||
|
||||
protected:
|
||||
bool m_visible;
|
||||
int m_width;
|
||||
QString m_selectedPage;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,215 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "statusbarmessagelabel.h"
|
||||
#include <qpainter.h>
|
||||
#include <qtimer.h>
|
||||
#include <qfontmetrics.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kglobalsettings.h>
|
||||
|
||||
StatusBarMessageLabel::StatusBarMessageLabel(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
m_type(DolphinStatusBar::Default),
|
||||
m_state(Default),
|
||||
m_illumination(0),
|
||||
m_minTextHeight(-1),
|
||||
m_timer(0)
|
||||
{
|
||||
setMinimumHeight(KIcon::SizeSmall);
|
||||
|
||||
m_timer = new QTimer(this);
|
||||
connect(m_timer, SIGNAL(timeout()),
|
||||
this, SLOT(timerDone()));
|
||||
}
|
||||
|
||||
StatusBarMessageLabel::~StatusBarMessageLabel()
|
||||
{
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::setType(DolphinStatusBar::Type type)
|
||||
{
|
||||
if (type != m_type) {
|
||||
m_type = type;
|
||||
|
||||
m_timer->stop();
|
||||
m_illumination = 0;
|
||||
m_state = Default;
|
||||
|
||||
const char* iconName = 0;
|
||||
QPixmap pixmap;
|
||||
switch (type) {
|
||||
case DolphinStatusBar::OperationCompleted:
|
||||
iconName = "ok";
|
||||
break;
|
||||
|
||||
case DolphinStatusBar::Information:
|
||||
iconName = "info";
|
||||
break;
|
||||
|
||||
case DolphinStatusBar::Error:
|
||||
iconName = "error";
|
||||
m_timer->start(100);
|
||||
m_state = Illuminate;
|
||||
break;
|
||||
|
||||
case DolphinStatusBar::Default:
|
||||
default: break;
|
||||
}
|
||||
|
||||
m_pixmap = (iconName == 0) ? QPixmap() : SmallIcon(iconName);
|
||||
assureVisibleText();
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::setText(const QString& text)
|
||||
{
|
||||
if (text != m_text) {
|
||||
if (m_type == DolphinStatusBar::Error) {
|
||||
m_timer->start(100);
|
||||
m_illumination = 0;
|
||||
m_state = Illuminate;
|
||||
}
|
||||
m_text = text;
|
||||
assureVisibleText();
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::setMinimumTextHeight(int min)
|
||||
{
|
||||
if (min != m_minTextHeight) {
|
||||
m_minTextHeight = min;
|
||||
setMinimumHeight(min);
|
||||
}
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::paintEvent(QPaintEvent* /* event */)
|
||||
{
|
||||
QPixmap buffer(size());
|
||||
QPainter painter(&buffer);
|
||||
|
||||
// draw background
|
||||
QColor backgroundColor(colorGroup().background());
|
||||
QColor foregroundColor(KGlobalSettings::textColor());
|
||||
if (m_illumination > 0) {
|
||||
backgroundColor = mixColors(backgroundColor, QColor(255, 255, 64), m_illumination);
|
||||
foregroundColor = mixColors(foregroundColor, QColor(0, 0, 0), m_illumination);
|
||||
}
|
||||
painter.setBrush(backgroundColor);
|
||||
painter.setPen(backgroundColor);
|
||||
painter.drawRect(QRect(0, 0, width(), height()));
|
||||
|
||||
// draw pixmap
|
||||
int x = pixmapGap();
|
||||
int y = (height() - m_pixmap.height()) / 2;
|
||||
|
||||
if (!m_pixmap.isNull()) {
|
||||
painter.drawPixmap(x, y, m_pixmap);
|
||||
x += m_pixmap.width() + pixmapGap();
|
||||
}
|
||||
|
||||
// draw text
|
||||
painter.setPen(foregroundColor);
|
||||
painter.drawText(QRect(x, 0, width() - x, height()), Qt::AlignVCenter | Qt::WordBreak, m_text);
|
||||
painter.end();
|
||||
|
||||
bitBlt(this, 0, 0, &buffer);
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::resizeEvent(QResizeEvent* event)
|
||||
{
|
||||
QWidget::resizeEvent(event);
|
||||
QTimer::singleShot(0, this, SLOT(assureVisibleText()));
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::timerDone()
|
||||
{
|
||||
switch (m_state) {
|
||||
case Illuminate: {
|
||||
// increase the illumination
|
||||
if (m_illumination < 100) {
|
||||
m_illumination += 20;
|
||||
update();
|
||||
}
|
||||
else {
|
||||
m_state = Illuminated;
|
||||
m_timer->start(1000);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Illuminated: {
|
||||
// start desaturation
|
||||
m_state = Desaturate;
|
||||
m_timer->start(100);
|
||||
break;
|
||||
}
|
||||
|
||||
case Desaturate: {
|
||||
// desaturate
|
||||
if (m_illumination > 0) {
|
||||
m_illumination -= 5;
|
||||
update();
|
||||
}
|
||||
else {
|
||||
m_state = Default;
|
||||
m_timer->stop();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void StatusBarMessageLabel::assureVisibleText()
|
||||
{
|
||||
if (m_text.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int availableWidth = width() - m_pixmap.width() - pixmapGap() * 2;
|
||||
|
||||
QFontMetrics fontMetrics(font());
|
||||
QRect bounds(fontMetrics.boundingRect(0, 0, availableWidth, height(),
|
||||
Qt::AlignVCenter | Qt::WordBreak,
|
||||
m_text));
|
||||
int requiredHeight = bounds.height();
|
||||
if (requiredHeight < m_minTextHeight) {
|
||||
requiredHeight = m_minTextHeight;
|
||||
}
|
||||
setMinimumHeight(requiredHeight);
|
||||
updateGeometry();
|
||||
}
|
||||
|
||||
QColor StatusBarMessageLabel::mixColors(const QColor& c1,
|
||||
const QColor& c2,
|
||||
int percent) const
|
||||
{
|
||||
const int recip = 100 - percent;
|
||||
const int red = (c1.red() * recip + c2.red() * percent) / 100;
|
||||
const int green = (c1.green() * recip + c2.green() * percent) / 100;
|
||||
const int blue = (c1.blue() * recip + c2.blue() * percent) / 100;
|
||||
return QColor(red, green, blue);
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef STATUSBARMESSAGELABEL_H
|
||||
#define STATUSBARMESSAGELABEL_H
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qstring.h>
|
||||
#include <dolphinstatusbar.h>
|
||||
class QTimer;
|
||||
|
||||
/**
|
||||
* @brief Represents a message text label as part of the status bar.
|
||||
*
|
||||
* Dependant from the given type automatically a corresponding icon
|
||||
* is shown in front of the text. For message texts having the type
|
||||
* DolphinStatusBar::Error a dynamic color blending is done to get the
|
||||
* attention from the user.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class StatusBarMessageLabel : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
StatusBarMessageLabel(QWidget* parent);
|
||||
virtual ~StatusBarMessageLabel();
|
||||
|
||||
void setType(DolphinStatusBar::Type type);
|
||||
DolphinStatusBar::Type type() const { return m_type; }
|
||||
|
||||
void setText(const QString& text);
|
||||
const QString& text() const { return m_text; }
|
||||
|
||||
// TODO: maybe a better approach is possible with the size hint
|
||||
void setMinimumTextHeight(int min);
|
||||
int minimumTextHeight() const { return m_minTextHeight; }
|
||||
|
||||
protected:
|
||||
/** @see QWidget::paintEvent */
|
||||
virtual void paintEvent(QPaintEvent* event);
|
||||
|
||||
/** @see QWidget::resizeEvent */
|
||||
virtual void resizeEvent(QResizeEvent* event);
|
||||
|
||||
private slots:
|
||||
void timerDone();
|
||||
void assureVisibleText();
|
||||
|
||||
private:
|
||||
enum State {
|
||||
Default,
|
||||
Illuminate,
|
||||
Illuminated,
|
||||
Desaturate
|
||||
};
|
||||
|
||||
DolphinStatusBar::Type m_type;
|
||||
State m_state;
|
||||
int m_illumination;
|
||||
int m_minTextHeight;
|
||||
QTimer* m_timer;
|
||||
QString m_text;
|
||||
QPixmap m_pixmap;
|
||||
|
||||
QColor mixColors(const QColor& c1,
|
||||
const QColor& c2,
|
||||
int percent) const;
|
||||
|
||||
int pixmapGap() const { return 3; }
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,192 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and *
|
||||
* and Patrice Tremblay *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "statusbarspaceinfo.h"
|
||||
|
||||
#include <qpainter.h>
|
||||
#include <qtimer.h>
|
||||
#include <kglobalsettings.h>
|
||||
#include <kdiskfreesp.h>
|
||||
#include <klocale.h>
|
||||
#include <kio/job.h>
|
||||
|
||||
StatusBarSpaceInfo::StatusBarSpaceInfo(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
m_gettingSize(false),
|
||||
m_kBSize(0),
|
||||
m_kBAvailable(0)
|
||||
{
|
||||
setMinimumWidth(200);
|
||||
|
||||
// Update the space information each 10 seconds. Polling is useful
|
||||
// here, as files can be deleted/added outside the scope of Dolphin.
|
||||
QTimer* timer = new QTimer(this);
|
||||
connect(timer, SIGNAL(timeout()), this, SLOT(refresh()));
|
||||
timer->start(10000);
|
||||
}
|
||||
|
||||
StatusBarSpaceInfo::~StatusBarSpaceInfo()
|
||||
{
|
||||
}
|
||||
|
||||
void StatusBarSpaceInfo::setURL(const KURL& url)
|
||||
{
|
||||
m_url = url;
|
||||
refresh();
|
||||
update();
|
||||
}
|
||||
|
||||
void StatusBarSpaceInfo::paintEvent(QPaintEvent* /* event */)
|
||||
{
|
||||
QPainter painter(this);
|
||||
const int barWidth = width();
|
||||
const int barTop = 2;
|
||||
const int barHeight = height() - 4;
|
||||
|
||||
QString text;
|
||||
|
||||
const int widthDec = 3; // visual decrement for the available width
|
||||
|
||||
const QColor c1 = colorGroup().background();
|
||||
const QColor c2 = KGlobalSettings::buttonTextColor();
|
||||
const QColor frameColor((c1.red() + c2.red()) / 2,
|
||||
(c1.green() + c2.green()) / 2,
|
||||
(c1.blue() + c2.blue()) / 2);
|
||||
painter.setPen(frameColor);
|
||||
|
||||
const QColor backgrColor = KGlobalSettings::baseColor();
|
||||
painter.setBrush(backgrColor);
|
||||
|
||||
painter.drawRect(QRect(0, barTop + 1 , barWidth - widthDec, barHeight));
|
||||
|
||||
if ((m_kBSize > 0) && (m_kBAvailable > 0)) {
|
||||
// draw 'used size' bar
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.setBrush(progressColor(backgrColor));
|
||||
int usedWidth = barWidth - static_cast<int>((m_kBAvailable *
|
||||
static_cast<float>(barWidth)) / m_kBSize);
|
||||
const int left = 1;
|
||||
int right = usedWidth - (widthDec + 1);
|
||||
if (right < left) {
|
||||
right = left;
|
||||
}
|
||||
painter.drawRect(QRect(left, barTop + 2, right, barHeight - 2));
|
||||
|
||||
text = i18n("%1 free")
|
||||
.arg(KIO::convertSizeFromKB(m_kBAvailable));
|
||||
}
|
||||
else {
|
||||
if (m_gettingSize) {
|
||||
text = i18n("Getting size...");
|
||||
}
|
||||
else {
|
||||
text = "";
|
||||
QTimer::singleShot(0, this, SLOT(hide()));
|
||||
}
|
||||
}
|
||||
|
||||
// draw text (usually 'Y GB free')
|
||||
painter.setPen(KGlobalSettings::textColor());
|
||||
painter.drawText(QRect(1, 1, barWidth - 2, barHeight + 4),
|
||||
Qt::AlignHCenter | Qt::AlignVCenter | Qt::WordBreak,
|
||||
text);
|
||||
}
|
||||
|
||||
|
||||
void StatusBarSpaceInfo::slotFoundMountPoint(const unsigned long& kBSize,
|
||||
const unsigned long& /* kBUsed */,
|
||||
const unsigned long& kBAvailable,
|
||||
const QString& /* mountPoint */)
|
||||
{
|
||||
m_gettingSize = false;
|
||||
m_kBSize = kBSize;
|
||||
m_kBAvailable = kBAvailable;
|
||||
|
||||
// Bypass a the issue (?) of KDiskFreeSp that for protocols like
|
||||
// FTP, SMB the size of root partition is returned.
|
||||
// TODO: check whether KDiskFreeSp is buggy or Dolphin uses it in a wrong way
|
||||
const QString protocol(m_url.protocol());
|
||||
if (!protocol.isEmpty() && (protocol != "file")) {
|
||||
m_kBSize = 0;
|
||||
m_kBAvailable = 0;
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
void StatusBarSpaceInfo::slotDone()
|
||||
{
|
||||
m_gettingSize = false;
|
||||
if ((m_kBSize > 0) && (m_kBAvailable > 0)) {
|
||||
show();
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
void StatusBarSpaceInfo::refresh()
|
||||
{
|
||||
m_gettingSize = true;
|
||||
m_kBSize = 0;
|
||||
m_kBAvailable = 0;
|
||||
|
||||
const QString mountPoint(KIO::findPathMountPoint(m_url.path()));
|
||||
|
||||
KDiskFreeSp* job = new KDiskFreeSp(this);
|
||||
connect(job, SIGNAL(foundMountPoint(const unsigned long&,
|
||||
const unsigned long&,
|
||||
const unsigned long&,
|
||||
const QString& )),
|
||||
this, SLOT(slotFoundMountPoint(const unsigned long&,
|
||||
const unsigned long&,
|
||||
const unsigned long&,
|
||||
const QString& )));
|
||||
connect(job, SIGNAL(done()),
|
||||
this, SLOT(slotDone()));
|
||||
|
||||
job->readDF(mountPoint);
|
||||
}
|
||||
|
||||
QColor StatusBarSpaceInfo::progressColor(const QColor& bgColor) const
|
||||
{
|
||||
QColor color = KGlobalSettings::buttonBackground();
|
||||
|
||||
// assure that enough contrast is given between the background color
|
||||
// and the progressbar color
|
||||
int bgRed = bgColor.red();
|
||||
int bgGreen = bgColor.green();
|
||||
int bgBlue = bgColor.blue();
|
||||
|
||||
const int backgrBrightness = qGray(bgRed, bgGreen, bgBlue);
|
||||
const int progressBrightness = qGray(color.red(), color.green(), color.blue());
|
||||
|
||||
const int limit = 32;
|
||||
const int diff = backgrBrightness - progressBrightness;
|
||||
bool adjustColor = ((diff >= 0) && (diff < limit)) ||
|
||||
((diff < 0) && (diff > -limit));
|
||||
if (adjustColor) {
|
||||
const int inc = (backgrBrightness < 2 * limit) ? (2 * limit) : -limit;
|
||||
color = QColor(bgRed + inc, bgGreen + inc, bgBlue + inc);
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
#include "statusbarspaceinfo.moc"
|
@ -0,0 +1,79 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and *
|
||||
* and Patrice Tremblay *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef STATUSBARSPACEINFO_H
|
||||
#define STATUSBARSPACEINFO_H
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <qstring.h>
|
||||
#include <kurl.h>
|
||||
#include <qcolor.h>
|
||||
|
||||
class KDiskFreeSp;
|
||||
|
||||
/**
|
||||
* @short Shows the available space for the current volume as part
|
||||
* of the status bar.
|
||||
*/
|
||||
class StatusBarSpaceInfo : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
StatusBarSpaceInfo(QWidget* parent);
|
||||
virtual ~StatusBarSpaceInfo();
|
||||
|
||||
void setURL(const KURL& url);
|
||||
const KURL& url() const { return m_url; }
|
||||
|
||||
protected:
|
||||
/** @see QWidget::paintEvent */
|
||||
virtual void paintEvent(QPaintEvent* event);
|
||||
|
||||
private slots:
|
||||
/**
|
||||
* The strange signature of this method is due to a compiler
|
||||
* bug (?). More details are given inside the class KDiskFreeSp (see
|
||||
* KDE Libs documentation).
|
||||
*/
|
||||
void slotFoundMountPoint(const unsigned long& kBSize,
|
||||
const unsigned long& kBUsed,
|
||||
const unsigned long& kBAvailable,
|
||||
const QString& mountPoint);
|
||||
void slotDone();
|
||||
|
||||
/** Refreshs the space information for the current set URL. */
|
||||
void refresh();
|
||||
|
||||
private:
|
||||
/**
|
||||
* Returns a color for the progress bar by respecting
|
||||
* the given background color \a bgColor. It is assured
|
||||
* that enough contrast is given to have a visual indication.
|
||||
*/
|
||||
QColor progressColor(const QColor& bgColor) const;
|
||||
|
||||
KURL m_url;
|
||||
bool m_gettingSize;
|
||||
unsigned long m_kBSize;
|
||||
unsigned long m_kBAvailable;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,402 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "undomanager.h"
|
||||
#include <klocale.h>
|
||||
#include <kio/netaccess.h>
|
||||
#include <qtimer.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "dolphinstatusbar.h"
|
||||
#include "progressindicator.h"
|
||||
|
||||
DolphinCommand::DolphinCommand() :
|
||||
m_type(Copy),
|
||||
m_macroIndex(-1)
|
||||
{
|
||||
// Implementation note: DolphinCommands are stored in a QValueList, whereas
|
||||
// QValueList requires a default constructor of the added class.
|
||||
// Instead of expressing this implementation detail to the interface by adding a
|
||||
// Type::Undefined just Type::Copy is used to assure that all members have
|
||||
// a defined state.
|
||||
}
|
||||
|
||||
DolphinCommand::DolphinCommand(Type type,
|
||||
const KURL::List& source,
|
||||
const KURL& dest) :
|
||||
m_type(type),
|
||||
m_macroIndex(-1),
|
||||
m_source(source),
|
||||
m_dest(dest)
|
||||
{
|
||||
}
|
||||
|
||||
DolphinCommand::~DolphinCommand()
|
||||
{
|
||||
}
|
||||
|
||||
DolphinCommand& DolphinCommand::operator = (const DolphinCommand& command)
|
||||
{
|
||||
m_type = command.m_type;
|
||||
m_source = command.m_source;
|
||||
m_dest = command.m_dest;
|
||||
return *this;
|
||||
}
|
||||
|
||||
UndoManager& UndoManager::instance()
|
||||
{
|
||||
static UndoManager* instance = 0;
|
||||
if (instance == 0) {
|
||||
instance = new UndoManager();
|
||||
}
|
||||
return *instance;
|
||||
}
|
||||
|
||||
void UndoManager::addCommand(const DolphinCommand& command)
|
||||
{
|
||||
++m_historyIndex;
|
||||
|
||||
if (m_recordMacro) {
|
||||
DolphinCommand macroCommand = command;
|
||||
macroCommand.m_macroIndex = m_macroCounter;
|
||||
m_history.insert(m_history.at(m_historyIndex), macroCommand);
|
||||
}
|
||||
else {
|
||||
m_history.insert(m_history.at(m_historyIndex), command);
|
||||
}
|
||||
|
||||
emit undoAvailable(true);
|
||||
emit undoTextChanged(i18n("Undo: %1").arg(commandText(command)));
|
||||
|
||||
// prevent an endless growing of the Undo history
|
||||
if (m_historyIndex > 10000) {
|
||||
m_history.erase(m_history.begin());
|
||||
--m_historyIndex;
|
||||
}
|
||||
}
|
||||
|
||||
void UndoManager::beginMacro()
|
||||
{
|
||||
assert(!m_recordMacro);
|
||||
m_recordMacro = true;
|
||||
++m_macroCounter;
|
||||
}
|
||||
|
||||
void UndoManager::endMacro()
|
||||
{
|
||||
assert(m_recordMacro);
|
||||
m_recordMacro = false;
|
||||
}
|
||||
|
||||
void UndoManager::undo()
|
||||
{
|
||||
if (m_recordMacro) {
|
||||
endMacro();
|
||||
}
|
||||
|
||||
if (m_historyIndex < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int progressCount = 0;
|
||||
int macroCount = 1;
|
||||
calcStepsCount(macroCount, progressCount);
|
||||
|
||||
m_progressIndicator = new ProgressIndicator(i18n("Executing undo operation..."),
|
||||
i18n("Executed undo operation."),
|
||||
progressCount);
|
||||
|
||||
for (int i = 0; i < macroCount; ++i) {
|
||||
const DolphinCommand command = m_history[m_historyIndex];
|
||||
--m_historyIndex;
|
||||
if (m_historyIndex < 0) {
|
||||
emit undoAvailable(false);
|
||||
emit undoTextChanged(i18n("Undo"));
|
||||
}
|
||||
else {
|
||||
emit undoTextChanged(i18n("Undo: %1").arg(commandText(m_history[m_historyIndex])));
|
||||
}
|
||||
|
||||
if (m_historyIndex < static_cast<int>(m_history.count()) - 1) {
|
||||
emit redoAvailable(true);
|
||||
emit redoTextChanged(i18n("Redo: %1").arg(commandText(command)));
|
||||
}
|
||||
else {
|
||||
emit redoAvailable(false);
|
||||
emit redoTextChanged(i18n("Redo"));
|
||||
}
|
||||
|
||||
KURL::List sourceURLs = command.source();
|
||||
KURL::List::Iterator it = sourceURLs.begin();
|
||||
const KURL::List::Iterator end = sourceURLs.end();
|
||||
const QString destURL(command.destination().prettyURL(+1));
|
||||
|
||||
KIO::Job* job = 0;
|
||||
switch (command.type()) {
|
||||
case DolphinCommand::Link:
|
||||
case DolphinCommand::Copy: {
|
||||
KURL::List list;
|
||||
while (it != end) {
|
||||
const KURL deleteURL(destURL + (*it).filename());
|
||||
list.append(deleteURL);
|
||||
++it;
|
||||
}
|
||||
job = KIO::del(list, false, false);
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::Move: {
|
||||
KURL::List list;
|
||||
const KURL newDestURL((*it).directory());
|
||||
while (it != end) {
|
||||
const KURL newSourceURL(destURL + (*it).filename());
|
||||
list.append(newSourceURL);
|
||||
++it;
|
||||
}
|
||||
job = KIO::move(list, newDestURL, false);
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::Rename: {
|
||||
assert(sourceURLs.count() == 1);
|
||||
KIO::NetAccess::move(command.destination(), (*it));
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::Trash: {
|
||||
while (it != end) {
|
||||
// TODO: use KIO::special for accessing the trash protocol. See
|
||||
// also Dolphin::slotJobResult() for further details.
|
||||
const QString originalFileName((*it).filename().section('-', 1));
|
||||
KURL newDestURL(destURL + originalFileName);
|
||||
KIO::NetAccess::move(*it, newDestURL);
|
||||
++it;
|
||||
|
||||
m_progressIndicator->execOperation();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::CreateFolder:
|
||||
case DolphinCommand::CreateFile: {
|
||||
KIO::NetAccess::del(command.destination(), &Dolphin::mainWin());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (job != 0) {
|
||||
// Execute the jobs in a synchronous manner and forward the progress
|
||||
// information to the Dolphin statusbar.
|
||||
connect(job, SIGNAL(percent(KIO::Job*, unsigned long)),
|
||||
this, SLOT(slotPercent(KIO::Job*, unsigned long)));
|
||||
KIO::NetAccess::synchronousRun(job, &Dolphin::mainWin());
|
||||
}
|
||||
|
||||
m_progressIndicator->execOperation();
|
||||
}
|
||||
|
||||
delete m_progressIndicator;
|
||||
m_progressIndicator = 0;
|
||||
}
|
||||
|
||||
void UndoManager::redo()
|
||||
{
|
||||
if (m_recordMacro) {
|
||||
endMacro();
|
||||
}
|
||||
|
||||
const int maxHistoryIndex = m_history.count() - 1;
|
||||
if (m_historyIndex >= maxHistoryIndex) {
|
||||
return;
|
||||
}
|
||||
++m_historyIndex;
|
||||
|
||||
int progressCount = 0;
|
||||
int macroCount = 1;
|
||||
calcStepsCount(macroCount, progressCount);
|
||||
|
||||
m_progressIndicator = new ProgressIndicator(i18n("Executing redo operation..."),
|
||||
i18n("Executed redo operation."),
|
||||
progressCount);
|
||||
|
||||
for (int i = 0; i < macroCount; ++i) {
|
||||
const DolphinCommand command = m_history[m_historyIndex];
|
||||
if (m_historyIndex >= maxHistoryIndex) {
|
||||
emit redoAvailable(false);
|
||||
emit redoTextChanged(i18n("Redo"));
|
||||
}
|
||||
else {
|
||||
emit redoTextChanged(i18n("Redo: %1").arg(commandText(m_history[m_historyIndex + 1])));
|
||||
}
|
||||
|
||||
emit undoAvailable(true);
|
||||
emit undoTextChanged(i18n("Undo: %1").arg(commandText(command)));
|
||||
|
||||
Dolphin& dolphin = Dolphin::mainWin();
|
||||
|
||||
KURL::List sourceURLs = command.source();
|
||||
KURL::List::Iterator it = sourceURLs.begin();
|
||||
const KURL::List::Iterator end = sourceURLs.end();
|
||||
|
||||
KIO::Job* job = 0;
|
||||
switch (command.type()) {
|
||||
case DolphinCommand::Link: {
|
||||
job = KIO::link(sourceURLs, command.destination(), false);
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::Copy: {
|
||||
job = KIO::copy(sourceURLs, command.destination(), false);
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::Rename:
|
||||
case DolphinCommand::Move: {
|
||||
job = KIO::move(sourceURLs, command.destination(), false);
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::Trash: {
|
||||
const QString destURL(command.destination().prettyURL());
|
||||
while (it != end) {
|
||||
// TODO: use KIO::special for accessing the trash protocol. See
|
||||
// also Dolphin::slotJobResult() for further details.
|
||||
const QString originalFileName((*it).filename().section('-', 1));
|
||||
KURL originalSourceURL(destURL + "/" + originalFileName);
|
||||
KIO::Job* moveToTrashJob = KIO::trash(originalSourceURL);
|
||||
KIO::NetAccess::synchronousRun(moveToTrashJob, &dolphin);
|
||||
++it;
|
||||
|
||||
m_progressIndicator->execOperation();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::CreateFolder: {
|
||||
KIO::NetAccess::mkdir(command.destination(), &dolphin);
|
||||
break;
|
||||
}
|
||||
|
||||
case DolphinCommand::CreateFile: {
|
||||
m_progressIndicator->execOperation();
|
||||
KURL::List::Iterator it = sourceURLs.begin();
|
||||
assert(sourceURLs.count() == 1);
|
||||
KIO::CopyJob* copyJob = KIO::copyAs(*it, command.destination(), false);
|
||||
copyJob->setDefaultPermissions(true);
|
||||
job = copyJob;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (job != 0) {
|
||||
// Execute the jobs in a synchronous manner and forward the progress
|
||||
// information to the Dolphin statusbar.
|
||||
connect(job, SIGNAL(percent(KIO::Job*, unsigned long)),
|
||||
this, SLOT(slotPercent(KIO::Job*, unsigned long)));
|
||||
KIO::NetAccess::synchronousRun(job, &dolphin);
|
||||
}
|
||||
|
||||
++m_historyIndex;
|
||||
m_progressIndicator->execOperation();
|
||||
}
|
||||
|
||||
--m_historyIndex;
|
||||
|
||||
delete m_progressIndicator;
|
||||
m_progressIndicator = 0;
|
||||
}
|
||||
|
||||
UndoManager::UndoManager() :
|
||||
m_recordMacro(false),
|
||||
m_historyIndex(-1),
|
||||
m_macroCounter(0),
|
||||
m_progressIndicator(0)
|
||||
{
|
||||
}
|
||||
|
||||
UndoManager::~UndoManager()
|
||||
{
|
||||
delete m_progressIndicator;
|
||||
m_progressIndicator = 0;
|
||||
}
|
||||
|
||||
QString UndoManager::commandText(const DolphinCommand& command) const
|
||||
{
|
||||
QString text;
|
||||
switch (command.type()) {
|
||||
case DolphinCommand::Copy: text = i18n("Copy"); break;
|
||||
case DolphinCommand::Move: text = i18n("Move"); break;
|
||||
case DolphinCommand::Link: text = i18n("Link"); break;
|
||||
case DolphinCommand::Rename: text = i18n("Rename"); break;
|
||||
case DolphinCommand::Trash: text = i18n("Move to Trash"); break;
|
||||
case DolphinCommand::CreateFolder: text = i18n("Create New Folder"); break;
|
||||
case DolphinCommand::CreateFile: text = i18n("Create New File"); break;
|
||||
default: break;
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
void UndoManager::slotPercent(KIO::Job* /* job */, unsigned long /* percent */)
|
||||
{
|
||||
// It is not allowed to update the progress indicator in the context
|
||||
// of this slot, hence do an asynchronous triggering.
|
||||
QTimer::singleShot(0, this, SLOT(updateProgress()));
|
||||
}
|
||||
|
||||
void UndoManager::updateProgress()
|
||||
{
|
||||
m_progressIndicator->execOperation();
|
||||
}
|
||||
|
||||
void UndoManager::calcStepsCount(int& macroCount, int& progressCount)
|
||||
{
|
||||
progressCount = 0;
|
||||
macroCount = 0;
|
||||
|
||||
const int macroIndex = m_history[m_historyIndex].m_macroIndex;
|
||||
if (macroIndex < 0) {
|
||||
// default use case: no macro has been recorded
|
||||
macroCount = 1;
|
||||
progressCount = m_history[m_historyIndex].source().count();
|
||||
return;
|
||||
}
|
||||
|
||||
// iterate backward for undo...
|
||||
int i = m_historyIndex;
|
||||
while ((i >= 0) && (m_history[i].m_macroIndex == macroIndex)) {
|
||||
++macroCount;
|
||||
progressCount += m_history[i].source().count();
|
||||
--i;
|
||||
}
|
||||
|
||||
// iterate forward for redo...
|
||||
const int max = m_history.count() - 1;
|
||||
i = m_historyIndex + 1;
|
||||
while ((i <= max) && (m_history[i].m_macroIndex == macroIndex)) {
|
||||
++macroCount;
|
||||
progressCount += m_history[i].source().count();
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
#include "undomanager.moc"
|
||||
|
||||
|
@ -0,0 +1,196 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef UNDOMANAGER_H
|
||||
#define UNDOMANAGER_H
|
||||
|
||||
#include <qobject.h>
|
||||
#include <qvaluelist.h>
|
||||
#include <kurl.h>
|
||||
#include <kio/jobclasses.h>
|
||||
|
||||
class ProgressIndicator;
|
||||
|
||||
/**
|
||||
* @short Represents a file manager command which can be undone and redone.
|
||||
*
|
||||
* A command is specified by a type, a list of source URLs and a
|
||||
* destination URL.
|
||||
*
|
||||
* Due to the fixed set of commands a file manager offers this class is
|
||||
* a very simplified version of the classic command pattern.
|
||||
*
|
||||
* @see UndoManager
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class DolphinCommand
|
||||
{
|
||||
public:
|
||||
enum Type {
|
||||
Copy,
|
||||
Move,
|
||||
Link,
|
||||
Rename,
|
||||
Trash,
|
||||
CreateFolder,
|
||||
CreateFile
|
||||
};
|
||||
|
||||
DolphinCommand();
|
||||
DolphinCommand(Type type, const KURL::List& source, const KURL& dest);
|
||||
~DolphinCommand(); // non-virtual
|
||||
|
||||
DolphinCommand& operator = (const DolphinCommand& command);
|
||||
Type type() const { return m_type; }
|
||||
void setSource(const KURL::List source) { m_source = source; }
|
||||
const KURL::List& source() const { return m_source; }
|
||||
const KURL& destination() const { return m_dest; }
|
||||
|
||||
private:
|
||||
Type m_type;
|
||||
int m_macroIndex;
|
||||
KURL::List m_source;
|
||||
KURL m_dest;
|
||||
|
||||
friend class UndoManager; // allow to modify m_macroIndex
|
||||
};
|
||||
|
||||
/**
|
||||
* @short Stores all file manager commands which can be undone and redone.
|
||||
*
|
||||
* During the undo and redo operations a progress information is
|
||||
* shown in the status bar.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class UndoManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static UndoManager& instance();
|
||||
|
||||
/**
|
||||
* Adds the command \a command to the undo list. The command
|
||||
* can be undone by invoking UndoManager::undo().
|
||||
*/
|
||||
void addCommand(const DolphinCommand& command);
|
||||
|
||||
/**
|
||||
* Allows to summarize several commands into one macro, which
|
||||
* can be undo in one stop by UndoManager::undo(). Example
|
||||
* \code
|
||||
* UndoManager& undoMan = UndoManager.instance();
|
||||
* undoMan.beginMacro();
|
||||
* undoMan.addCommand(...);
|
||||
* undoMan.addCommand(...);
|
||||
* undoMan.addCommand(...);
|
||||
* undoMan.endMacro();
|
||||
* \endcode
|
||||
* It is not allowed to do nested macro recordings.
|
||||
*/
|
||||
void beginMacro();
|
||||
|
||||
/**
|
||||
* Marks the end of a macro command. See UndoManager::beginMacro()
|
||||
* for sample code.
|
||||
*/
|
||||
void endMacro();
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* Performs an undo operation on the last command which has
|
||||
* been added by UndoManager::addCommand().
|
||||
*/
|
||||
void undo();
|
||||
|
||||
/**
|
||||
* Performs a redo operation on the last command where an undo
|
||||
* operation has been applied.
|
||||
*/
|
||||
void redo();
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Is emitted if whenever the availability state
|
||||
* of the current undo operation changes.
|
||||
*/
|
||||
void undoAvailable(bool available);
|
||||
|
||||
/**
|
||||
* Is emitted whenever the text of the current
|
||||
* undo operation changes
|
||||
* (e. g. from 'Undo: Delete' to 'Undo: Copy')
|
||||
*/
|
||||
void undoTextChanged(const QString& text);
|
||||
|
||||
/**
|
||||
* Is emitted if whenever the availability state
|
||||
* of the current redo operation changes.
|
||||
*/
|
||||
void redoAvailable(bool available);
|
||||
|
||||
/**
|
||||
* Is emitted whenever the text of the current
|
||||
* redo operation changes
|
||||
* (e. g. from 'Redo: Delete' to 'Redo: Copy')
|
||||
*/
|
||||
void redoTextChanged(const QString& text);
|
||||
|
||||
protected:
|
||||
UndoManager();
|
||||
virtual ~UndoManager();
|
||||
QString commandText(const DolphinCommand& command) const;
|
||||
|
||||
private slots:
|
||||
/**
|
||||
* Slot for the percent information of the I/O slaves.
|
||||
* Delegates the updating of the progress information
|
||||
* to UndoManager::updateProgress().
|
||||
*/
|
||||
void slotPercent(KIO::Job* job, unsigned long percent);
|
||||
|
||||
/**
|
||||
* Updates the progress information of the statusbar
|
||||
* by accessing the progress indicator information.
|
||||
*/
|
||||
void updateProgress();
|
||||
|
||||
private:
|
||||
bool m_recordMacro;
|
||||
int m_historyIndex;
|
||||
int m_macroCounter;
|
||||
QValueList<DolphinCommand> m_history;
|
||||
ProgressIndicator* m_progressIndicator;
|
||||
|
||||
/**
|
||||
* Dependent from the current history index \a m_historyIndex
|
||||
* the number of macro commands is written to the output
|
||||
* parameter \a macroCount. The number of steps for all macro
|
||||
* commands is written to the output parameter \a progressCount.
|
||||
*
|
||||
* Per default \a macroCount is 1 and \a progressCount represents
|
||||
* the number of operations for one command.
|
||||
*/
|
||||
void calcStepsCount(int& macroCount,
|
||||
int& progressCount);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,96 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
|
||||
* Copyright (C) 2006 by Aaron J. Seigo (<aseigo@kde.org>) *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "urlnavigatorbutton.h"
|
||||
#include <kurl.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qcursor.h>
|
||||
#include <qfontmetrics.h>
|
||||
#include <kurldrag.h>
|
||||
#include <kpopupmenu.h>
|
||||
#include <kiconloader.h>
|
||||
#include <klocale.h>
|
||||
|
||||
#include "urlnavigator.h"
|
||||
#include "dolphin.h"
|
||||
|
||||
|
||||
URLButton::URLButton(URLNavigator* parent)
|
||||
: QPushButton(parent),
|
||||
m_displayHint(0),
|
||||
m_urlNavigator(parent)
|
||||
{
|
||||
setFocusPolicy(QWidget::NoFocus);
|
||||
setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
|
||||
setMinimumHeight(parent->minimumHeight());
|
||||
|
||||
connect(this, SIGNAL(clicked()), parent, SLOT(slotRequestActivation()));
|
||||
connect(&Dolphin::mainWin(), SIGNAL(activeViewChanged()),
|
||||
this, SLOT(update()));
|
||||
}
|
||||
|
||||
URLButton::~URLButton()
|
||||
{
|
||||
}
|
||||
|
||||
URLNavigator* URLButton::urlNavigator() const
|
||||
{
|
||||
return m_urlNavigator;
|
||||
}
|
||||
|
||||
void URLButton::setDisplayHintEnabled(DisplayHint hint,
|
||||
bool enable)
|
||||
{
|
||||
if (enable) {
|
||||
m_displayHint = m_displayHint | hint;
|
||||
}
|
||||
else {
|
||||
m_displayHint = m_displayHint & ~hint;
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
bool URLButton::isDisplayHintEnabled(DisplayHint hint) const
|
||||
{
|
||||
return (m_displayHint & hint) > 0;
|
||||
}
|
||||
|
||||
void URLButton::enterEvent(QEvent* event)
|
||||
{
|
||||
QPushButton::enterEvent(event);
|
||||
setDisplayHintEnabled(EnteredHint, true);
|
||||
update();
|
||||
}
|
||||
|
||||
void URLButton::leaveEvent(QEvent* event)
|
||||
{
|
||||
QPushButton::leaveEvent(event);
|
||||
setDisplayHintEnabled(EnteredHint, false);
|
||||
update();
|
||||
}
|
||||
|
||||
QColor URLButton::mixColors(const QColor& c1,
|
||||
const QColor& c2) const
|
||||
{
|
||||
const int red = (c1.red() + c2.red()) / 2;
|
||||
const int green = (c1.green() + c2.green()) / 2;
|
||||
const int blue = (c1.blue() + c2.blue()) / 2;
|
||||
return QColor(red, green, blue);
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
|
||||
* Copyright (C) 2006 by Aaron J. Seigo (<aseigo@kde.org>) *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef URLBUTTON_H
|
||||
#define URLBUTTON_H
|
||||
|
||||
#include <qpushbutton.h>
|
||||
|
||||
class KURL;
|
||||
class URLNavigator;
|
||||
class QPainter;
|
||||
|
||||
/**
|
||||
* @brief Base class for buttons of the URL navigator.
|
||||
*
|
||||
* Each button of the URL navigator contains an URL, which
|
||||
* is set as soon as the button has been clicked.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class URLButton : public QPushButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
URLButton(URLNavigator* parent);
|
||||
virtual ~URLButton();
|
||||
|
||||
URLNavigator* urlNavigator() const;
|
||||
|
||||
protected:
|
||||
enum DisplayHint {
|
||||
ActivatedHint = 1,
|
||||
EnteredHint = 2,
|
||||
DraggedHint = 4,
|
||||
PopupActiveHint = 8
|
||||
};
|
||||
|
||||
void setDisplayHintEnabled(DisplayHint hint, bool enable);
|
||||
bool isDisplayHintEnabled(DisplayHint hint) const;
|
||||
|
||||
virtual void enterEvent(QEvent* event);
|
||||
virtual void leaveEvent(QEvent* event);
|
||||
|
||||
QColor mixColors(const QColor& c1, const QColor& c2) const;
|
||||
|
||||
private:
|
||||
int m_displayHint;
|
||||
URLNavigator* m_urlNavigator;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,501 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
|
||||
* Copyright (C) 2006 by Aaron J. Seigo (<aseigo@kde.org>) *
|
||||
* Copyright (C) 2006 by Patrice Tremblay *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "urlnavigator.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <kurl.h>
|
||||
#include <qobjectlist.h>
|
||||
#include <qcombobox.h>
|
||||
#include <klocale.h>
|
||||
#include <kiconloader.h>
|
||||
#include <qpopupmenu.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qsizepolicy.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qfont.h>
|
||||
#include <qlistbox.h>
|
||||
|
||||
#include <kio/job.h>
|
||||
#include <kurlcombobox.h>
|
||||
#include <kurlcompletion.h>
|
||||
#include <kbookmarkmanager.h>
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "dolphinsettings.h"
|
||||
#include "bookmarkselector.h"
|
||||
#include "dolphinstatusbar.h"
|
||||
#include "urlnavigatorbutton.h"
|
||||
#include "dolphinview.h"
|
||||
|
||||
URLNavigator::HistoryElem::HistoryElem()
|
||||
: m_url(),
|
||||
m_currentFileName(),
|
||||
m_contentsX(0),
|
||||
m_contentsY(0)
|
||||
{
|
||||
}
|
||||
|
||||
URLNavigator::HistoryElem::HistoryElem(const KURL& url)
|
||||
: m_url(url),
|
||||
m_currentFileName(),
|
||||
m_contentsX(0),
|
||||
m_contentsY(0)
|
||||
{
|
||||
}
|
||||
|
||||
URLNavigator::HistoryElem::~HistoryElem()
|
||||
{
|
||||
}
|
||||
|
||||
URLNavigator::URLNavigator(const KURL& url,
|
||||
DolphinView* dolphinView) :
|
||||
QHBox(dolphinView),
|
||||
m_historyIndex(0),
|
||||
m_dolphinView(dolphinView)
|
||||
{
|
||||
m_history.prepend(HistoryElem(url));
|
||||
|
||||
QFontMetrics fontMetrics(font());
|
||||
setMinimumHeight(fontMetrics.height() + 8);
|
||||
|
||||
m_toggleButton = new QPushButton(SmallIcon("editurl"), 0, this);
|
||||
m_toggleButton->setFlat(true);
|
||||
m_toggleButton->setToggleButton(true);
|
||||
m_toggleButton->setFocusPolicy(QWidget::NoFocus);
|
||||
m_toggleButton->setMinimumHeight(minimumHeight());
|
||||
connect(m_toggleButton, SIGNAL(clicked()),
|
||||
this, SLOT(slotClicked()));
|
||||
if (DolphinSettings::instance().isURLEditable()) {
|
||||
m_toggleButton->toggle();
|
||||
}
|
||||
|
||||
m_bookmarkSelector = new BookmarkSelector(this);
|
||||
connect(m_bookmarkSelector, SIGNAL(bookmarkActivated(int)),
|
||||
this, SLOT(slotBookmarkActivated(int)));
|
||||
|
||||
m_pathBox = new KURLComboBox(KURLComboBox::Directories, true, this);
|
||||
|
||||
KURLCompletion* kurlCompletion = new KURLCompletion(KURLCompletion::DirCompletion);
|
||||
m_pathBox->setCompletionObject(kurlCompletion);
|
||||
m_pathBox->setAutoDeleteCompletionObject(true);
|
||||
|
||||
connect(m_pathBox, SIGNAL(returnPressed(const QString&)),
|
||||
this, SLOT(slotReturnPressed(const QString&)));
|
||||
connect(m_pathBox, SIGNAL(urlActivated(const KURL&)),
|
||||
this, SLOT(slotURLActivated(const KURL&)));
|
||||
|
||||
connect(dolphinView, SIGNAL(contentsMoved(int, int)),
|
||||
this, SLOT(slotContentsMoved(int, int)));
|
||||
updateContent();
|
||||
}
|
||||
|
||||
URLNavigator::~URLNavigator()
|
||||
{
|
||||
}
|
||||
|
||||
void URLNavigator::setURL(const KURL& url)
|
||||
{
|
||||
QString urlStr(url.prettyURL());
|
||||
|
||||
if (url.protocol() == "zip") {
|
||||
bool stillInside = false;
|
||||
if (KMimeType::findByPath(url.url(-1))
|
||||
->is("application/x-zip")) {
|
||||
stillInside = true;
|
||||
}
|
||||
else {
|
||||
KURL url1 = url.upURL();
|
||||
while (url1 != url1.upURL()) {
|
||||
if (KMimeType::findByPath(url1.url(-1))
|
||||
->is("application/x-zip")) {
|
||||
stillInside = true;
|
||||
break;
|
||||
}
|
||||
url1 = url1.upURL();
|
||||
}
|
||||
}
|
||||
if (!stillInside)
|
||||
{
|
||||
// Drop the zip:/ protocol since we are not in the zip anymore
|
||||
urlStr = url.path();
|
||||
}
|
||||
}
|
||||
else if (url.protocol() == "tar")
|
||||
{
|
||||
bool stillInside = false;
|
||||
KMimeType::Ptr kmp =
|
||||
KMimeType::findByPath(url.url(-1));
|
||||
if (kmp->is("application/x-tar") ||
|
||||
kmp->is("application/x-tarz") ||
|
||||
kmp->is("application/x-tbz") ||
|
||||
kmp->is("application/x-tgz") ||
|
||||
kmp->is("application/x-tzo")
|
||||
) {
|
||||
stillInside = true;
|
||||
}
|
||||
else {
|
||||
KURL url1 = url.upURL();
|
||||
while (url1 != url1.upURL()) {
|
||||
KMimeType::Ptr kmp =
|
||||
KMimeType::findByPath(url1.url(-1));
|
||||
if (kmp->is("application/x-tar") ||
|
||||
kmp->is("application/x-tarz") ||
|
||||
kmp->is("application/x-tbz") ||
|
||||
kmp->is("application/x-tgz") ||
|
||||
kmp->is("application/x-tzo")
|
||||
) {
|
||||
stillInside = true;
|
||||
break;
|
||||
}
|
||||
url1 = url1.upURL();
|
||||
}
|
||||
}
|
||||
if (!stillInside)
|
||||
{
|
||||
// Drop the tar:/ protocol since we are not in the tar anymore
|
||||
urlStr = url.path();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (urlStr.at(0) == '~') {
|
||||
// replace '~' by the home directory
|
||||
urlStr.remove(0, 1);
|
||||
urlStr.insert(0, QDir::home().path());
|
||||
}
|
||||
|
||||
const KURL transformedURL(urlStr);
|
||||
|
||||
if (m_historyIndex > 0) {
|
||||
// Check whether the previous element of the history has the same URL.
|
||||
// If yes, just go forward instead of inserting a duplicate history
|
||||
// element.
|
||||
const KURL& nextURL = m_history[m_historyIndex - 1].url();
|
||||
if (transformedURL == nextURL) {
|
||||
goForward();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const KURL& currURL = m_history[m_historyIndex].url();
|
||||
if (currURL == transformedURL) {
|
||||
// don't insert duplicate history elements
|
||||
return;
|
||||
}
|
||||
|
||||
updateHistoryElem();
|
||||
|
||||
const QValueListIterator<URLNavigator::HistoryElem> it = m_history.at(m_historyIndex);
|
||||
m_history.insert(it, HistoryElem(transformedURL));
|
||||
updateContent();
|
||||
emit urlChanged(transformedURL);
|
||||
emit historyChanged();
|
||||
|
||||
// Prevent an endless growing of the history: remembering
|
||||
// the last 100 URLs should be enough...
|
||||
if (m_historyIndex > 100) {
|
||||
m_history.erase(m_history.begin());
|
||||
--m_historyIndex;
|
||||
}
|
||||
}
|
||||
|
||||
const KURL& URLNavigator::url() const
|
||||
{
|
||||
assert(!m_history.empty());
|
||||
return m_history[m_historyIndex].url();
|
||||
}
|
||||
|
||||
KURL URLNavigator::url(int index) const
|
||||
{
|
||||
assert(index >= 0);
|
||||
QString path(url().prettyURL());
|
||||
path = path.section('/', 0, index);
|
||||
|
||||
if (path.at(path.length()) != '/')
|
||||
{
|
||||
path.append('/');
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
const QValueList<URLNavigator::HistoryElem>& URLNavigator::history(int& index) const
|
||||
{
|
||||
index = m_historyIndex;
|
||||
return m_history;
|
||||
}
|
||||
|
||||
void URLNavigator::goBack()
|
||||
{
|
||||
updateHistoryElem();
|
||||
|
||||
const int count = m_history.count();
|
||||
if (m_historyIndex < count - 1) {
|
||||
++m_historyIndex;
|
||||
updateContent();
|
||||
emit urlChanged(url());
|
||||
emit historyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigator::goForward()
|
||||
{
|
||||
if (m_historyIndex > 0) {
|
||||
--m_historyIndex;
|
||||
updateContent();
|
||||
emit urlChanged(url());
|
||||
emit historyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigator::goUp()
|
||||
{
|
||||
setURL(url().upURL());
|
||||
}
|
||||
|
||||
void URLNavigator::goHome()
|
||||
{
|
||||
setURL(DolphinSettings::instance().homeURL());
|
||||
}
|
||||
|
||||
void URLNavigator::setURLEditable(bool editable)
|
||||
{
|
||||
if (isURLEditable() != editable) {
|
||||
m_toggleButton->toggle();
|
||||
slotClicked();
|
||||
}
|
||||
}
|
||||
|
||||
bool URLNavigator::isURLEditable() const
|
||||
{
|
||||
return m_toggleButton->state() == QButton::On;
|
||||
}
|
||||
|
||||
void URLNavigator::editURL()
|
||||
{
|
||||
setURLEditable(true);
|
||||
m_pathBox->setFocus();
|
||||
}
|
||||
|
||||
DolphinView* URLNavigator::dolphinView() const
|
||||
{
|
||||
return m_dolphinView;
|
||||
}
|
||||
|
||||
void URLNavigator::keyReleaseEvent(QKeyEvent* event)
|
||||
{
|
||||
QHBox::keyReleaseEvent(event);
|
||||
if (isURLEditable() && (event->key() == Qt::Key_Escape)) {
|
||||
setURLEditable(false);
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigator::slotReturnPressed(const QString& text)
|
||||
{
|
||||
// Parts of the following code have been taken
|
||||
// from the class KateFileSelector located in
|
||||
// kate/app/katefileselector.hpp of Kate.
|
||||
// Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org>
|
||||
// Copyright (C) 2001 Joseph Wenninger <jowenn@kde.org>
|
||||
// Copyright (C) 2001 Anders Lund <anders.lund@lund.tdcadsl.dk>
|
||||
|
||||
KURL typedURL(text);
|
||||
if (typedURL.hasPass()) {
|
||||
typedURL.setPass(QString::null);
|
||||
}
|
||||
|
||||
QStringList urls = m_pathBox->urls();
|
||||
urls.remove(typedURL.url());
|
||||
urls.prepend(typedURL.url());
|
||||
m_pathBox->setURLs(urls, KURLComboBox::RemoveBottom);
|
||||
|
||||
setURL(typedURL);
|
||||
// The URL might have been adjusted by URLNavigator::setURL(), hence
|
||||
// synchronize the result in the path box.
|
||||
m_pathBox->setURL(url());
|
||||
}
|
||||
|
||||
void URLNavigator::slotURLActivated(const KURL& url)
|
||||
{
|
||||
setURL(url);
|
||||
}
|
||||
|
||||
void URLNavigator::slotRequestActivation()
|
||||
{
|
||||
m_dolphinView->requestActivation();
|
||||
}
|
||||
|
||||
void URLNavigator::slotBookmarkActivated(int index)
|
||||
{
|
||||
m_dolphinView->statusBar()->clear();
|
||||
m_dolphinView->requestActivation();
|
||||
|
||||
KBookmark bookmark = DolphinSettings::instance().bookmark(index);
|
||||
m_dolphinView->setURL(bookmark.url());
|
||||
}
|
||||
|
||||
void URLNavigator::slotContentsMoved(int x, int y)
|
||||
{
|
||||
m_history[m_historyIndex].setContentsX(x);
|
||||
m_history[m_historyIndex].setContentsY(y);
|
||||
}
|
||||
|
||||
void URLNavigator::slotClicked()
|
||||
{
|
||||
updateContent();
|
||||
if (isURLEditable()) {
|
||||
m_pathBox->setFocus();
|
||||
}
|
||||
else {
|
||||
m_dolphinView->setFocus();
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigator::updateHistoryElem()
|
||||
{
|
||||
assert(m_historyIndex >= 0);
|
||||
const KFileItem* item = m_dolphinView->currentFileItem();
|
||||
if (item != 0) {
|
||||
m_history[m_historyIndex].setCurrentFileName(item->name());
|
||||
}
|
||||
m_history[m_historyIndex].setContentsX(m_dolphinView->contentsX());
|
||||
m_history[m_historyIndex].setContentsY(m_dolphinView->contentsY());
|
||||
}
|
||||
|
||||
void URLNavigator::updateContent()
|
||||
{
|
||||
const QObjectList* list = children();
|
||||
if (list == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// set the iterator to the first URL navigator button
|
||||
QObjectListIterator it(*list);
|
||||
QObject* object = 0;
|
||||
while ((object = it.current()) != 0) {
|
||||
if (object->inherits("URLNavigatorButton")) {
|
||||
break;
|
||||
}
|
||||
++it;
|
||||
}
|
||||
|
||||
// delete all existing URL navigator buttons
|
||||
QPtrList<QWidget> deleteList;
|
||||
while ((object = it.current()) != 0) {
|
||||
if (object->inherits("URLNavigatorButton")) {
|
||||
// Don't close and delete the navigator button immediatly, otherwise
|
||||
// the iterator won't work anymore and an object would get deleted more
|
||||
// than once (-> crash).
|
||||
deleteList.append(static_cast<QWidget*>(object));
|
||||
}
|
||||
++it;
|
||||
}
|
||||
|
||||
// now close and delete all unused navigator buttons
|
||||
QPtrListIterator<QWidget> deleteIter(deleteList);
|
||||
QWidget* widget = 0;
|
||||
while ((widget = deleteIter.current()) != 0) {
|
||||
widget->close();
|
||||
widget->deleteLater();
|
||||
++deleteIter;
|
||||
}
|
||||
|
||||
m_bookmarkSelector->updateSelection(url());
|
||||
|
||||
QToolTip::remove(m_toggleButton);
|
||||
QString path(url().prettyURL());
|
||||
if (m_toggleButton->state() == QButton::On) {
|
||||
// TODO: don't hardcode the shortcut as part of the text
|
||||
QToolTip::add(m_toggleButton, i18n("Browse (Ctrl+B, Escape)"));
|
||||
|
||||
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
|
||||
m_pathBox->show();
|
||||
m_pathBox->setURL(url());
|
||||
}
|
||||
else {
|
||||
// TODO: don't hardcode the shortcut as part of the text
|
||||
QToolTip::add(m_toggleButton, i18n("Edit location (Ctrl+L)"));
|
||||
|
||||
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
m_pathBox->hide();
|
||||
QString dir_name;
|
||||
|
||||
// get the data from the currently selected bookmark
|
||||
KBookmark bookmark = m_bookmarkSelector->selectedBookmark();
|
||||
//int bookmarkIndex = m_bookmarkSelector->selectedIndex();
|
||||
|
||||
QString bookmarkPath;
|
||||
if (bookmark.isNull()) {
|
||||
// No bookmark is a part of the current URL.
|
||||
// The following code tries to guess the bookmark
|
||||
// path. E. g. "fish://root@192.168.0.2/var/lib" writes
|
||||
// "fish://root@192.168.0.2" to 'bookmarkPath', which leads to the
|
||||
// navigation indication 'Custom Path > var > lib".
|
||||
int idx = path.find(QString("//"));
|
||||
idx = path.find("/", (idx < 0) ? 0 : idx + 2);
|
||||
bookmarkPath = (idx < 0) ? path : path.left(idx);
|
||||
}
|
||||
else {
|
||||
bookmarkPath = bookmark.url().prettyURL();
|
||||
}
|
||||
const uint len = bookmarkPath.length();
|
||||
|
||||
// calculate the start point for the URL navigator buttons by counting
|
||||
// the slashs inside the bookmark URL
|
||||
int slashCount = 0;
|
||||
for (uint i = 0; i < len; ++i) {
|
||||
if (bookmarkPath.at(i) == QChar('/')) {
|
||||
++slashCount;
|
||||
}
|
||||
}
|
||||
if ((len > 0) && bookmarkPath.at(len - 1) == QChar('/')) {
|
||||
assert(slashCount > 0);
|
||||
--slashCount;
|
||||
}
|
||||
|
||||
// create URL navigator buttons
|
||||
int idx = slashCount;
|
||||
bool hasNext = true;
|
||||
do {
|
||||
dir_name = path.section('/', idx, idx);
|
||||
const bool isFirstButton = (idx == slashCount);
|
||||
hasNext = isFirstButton || !dir_name.isEmpty();
|
||||
if (hasNext) {
|
||||
URLNavigatorButton* button = new URLNavigatorButton(idx, this);
|
||||
if (isFirstButton) {
|
||||
// the first URL navigator button should get the name of the bookmark
|
||||
// instead of the directory name
|
||||
QString text = bookmark.text();
|
||||
if (text.isEmpty()) {
|
||||
text = bookmarkPath;
|
||||
}
|
||||
button->setText(text);
|
||||
}
|
||||
button->show();
|
||||
++idx;
|
||||
}
|
||||
} while (hasNext);
|
||||
}
|
||||
}
|
||||
|
||||
#include "urlnavigator.moc"
|
@ -0,0 +1,210 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef URLNAVIGATOR_H
|
||||
#define URLNAVIGATOR_H
|
||||
|
||||
#include <qhbox.h>
|
||||
#include <kurl.h>
|
||||
#include <qstring.h>
|
||||
|
||||
class DolphinView;
|
||||
class QPopupMenu;
|
||||
class QPushButton;
|
||||
class QComboBox;
|
||||
class BookmarkSelector;
|
||||
class KURLComboBox;
|
||||
class KFileItem;
|
||||
|
||||
/**
|
||||
* @brief Navigation bar which contains the current shown URL.
|
||||
*
|
||||
* The URL navigator offers two modes:
|
||||
* - Editable: Represents the 'classic' mode, where the current URL
|
||||
* is editable inside a line editor.
|
||||
* - Non editable: The URL is represented by a number of buttons, where
|
||||
* clicking on a button results in activating the URL
|
||||
* the button represents. This mode also supports drag
|
||||
* and drop of items.
|
||||
*
|
||||
* The mode can be changed by a toggle button located on the left side of
|
||||
* the navigator.
|
||||
*
|
||||
* The URL navigator also remembers the URL history and allows to go
|
||||
* back and forward within this history.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class URLNavigator : public QHBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Represents the history element of an URL.
|
||||
*
|
||||
* A history element contains the URL, the name of the current file
|
||||
* (the 'current file' is the file where the cursor is located) and
|
||||
* the x- and y-position of the content.
|
||||
*/
|
||||
class HistoryElem {
|
||||
public:
|
||||
HistoryElem();
|
||||
HistoryElem(const KURL& url);
|
||||
~HistoryElem(); // non virtual
|
||||
|
||||
const KURL& url() const { return m_url; }
|
||||
|
||||
void setCurrentFileName(const QString& name) { m_currentFileName = name; }
|
||||
const QString& currentFileName() const { return m_currentFileName; }
|
||||
|
||||
void setContentsX(int x) { m_contentsX = x; }
|
||||
int contentsX() const { return m_contentsX; }
|
||||
|
||||
void setContentsY(int y) { m_contentsY = y; }
|
||||
int contentsY() const { return m_contentsY; }
|
||||
|
||||
private:
|
||||
KURL m_url;
|
||||
QString m_currentFileName;
|
||||
int m_contentsX;
|
||||
int m_contentsY;
|
||||
};
|
||||
|
||||
URLNavigator(const KURL& url, DolphinView* dolphinView);;
|
||||
virtual ~URLNavigator();
|
||||
|
||||
/**
|
||||
* Sets the current active URL.
|
||||
* The signals URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void setURL(const KURL& url);
|
||||
|
||||
/** Returns the current active URL. */
|
||||
const KURL& url() const;
|
||||
|
||||
/** Returns the portion of the current active URL up to the button at index. */
|
||||
KURL url(int index) const;
|
||||
|
||||
/**
|
||||
* Returns the complete URL history. The index 0 indicates the oldest
|
||||
* history element.
|
||||
* @param index Output parameter which indicates the current
|
||||
* index of the location.
|
||||
*/
|
||||
const QValueList<HistoryElem>& history(int& index) const;
|
||||
|
||||
/**
|
||||
* Goes back one step in the URL history. The signals
|
||||
* URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void goBack();
|
||||
|
||||
/**
|
||||
* Goes forward one step in the URL history. The signals
|
||||
* URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void goForward();
|
||||
|
||||
/**
|
||||
* Goes up one step of the URL path. The signals
|
||||
* URLNavigator::urlChanged and URLNavigator::historyChanged
|
||||
* are submitted.
|
||||
*/
|
||||
void goUp();
|
||||
|
||||
/**
|
||||
* Goes to the home URL. The signals URLNavigator::urlChanged
|
||||
* and URLNavigator::historyChanged are submitted.
|
||||
*/
|
||||
void goHome();
|
||||
|
||||
/**
|
||||
* Allows to edit the URL of the navigation bar if \a editable
|
||||
* is true. If \a editable is false, each part of
|
||||
* the URL is presented by a button for a fast navigation.
|
||||
*/
|
||||
void setURLEditable(bool editable);
|
||||
|
||||
/**
|
||||
* @return True, if the URL is editable by the user within a line editor.
|
||||
* If false is returned, each part of the URL is presented by a button
|
||||
* for fast navigation.
|
||||
*/
|
||||
bool isURLEditable() const;
|
||||
|
||||
/**
|
||||
* Switches to the edit mode and assures that the keyboard focus
|
||||
* is assigned.
|
||||
*/
|
||||
void editURL();
|
||||
|
||||
DolphinView* dolphinView() const;
|
||||
|
||||
signals:
|
||||
void urlChanged(const KURL& url);
|
||||
void historyChanged();
|
||||
|
||||
protected:
|
||||
/** If the Escape key is pressed, the navigation bar should switch
|
||||
to the browse mode. */
|
||||
virtual void keyReleaseEvent(QKeyEvent* event);
|
||||
|
||||
private slots:
|
||||
void slotReturnPressed(const QString& text);
|
||||
void slotURLActivated(const KURL& url);
|
||||
|
||||
void slotRequestActivation();
|
||||
void slotBookmarkActivated(int index);
|
||||
|
||||
/**
|
||||
* Stores the coordinates of the moved content into
|
||||
* the current history element. Is usually triggered
|
||||
* by the signal 'contentsMoved' emitted by DolphinView.
|
||||
*/
|
||||
void slotContentsMoved(int x, int y);
|
||||
|
||||
/**
|
||||
* Switches the navigation bar between the editable and noneditable
|
||||
* state (see setURLEditable()) and is connected to the clicked signal
|
||||
* of the navigation bar button.
|
||||
*/
|
||||
void slotClicked();
|
||||
|
||||
private:
|
||||
int m_historyIndex;
|
||||
DolphinView* m_dolphinView;
|
||||
QValueList<HistoryElem> m_history;
|
||||
QPushButton* m_toggleButton;
|
||||
BookmarkSelector* m_bookmarkSelector;
|
||||
KURLComboBox* m_pathBox;
|
||||
|
||||
/**
|
||||
* Updates the history element with the current file item
|
||||
* and the contents position.
|
||||
*/
|
||||
void updateHistoryElem();
|
||||
void updateContent();
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,393 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
|
||||
* Copyright (C) 2006 by Aaron J. Seigo (<aseigo@kde.org>) *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "urlnavigatorbutton.h"
|
||||
#include <qcursor.h>
|
||||
#include <qfontmetrics.h>
|
||||
#include <qpainter.h>
|
||||
#include <qtimer.h>
|
||||
#include <qtooltip.h>
|
||||
|
||||
#include <kglobalsettings.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kio/jobclasses.h>
|
||||
#include <klocale.h>
|
||||
#include <kpopupmenu.h>
|
||||
#include <kurl.h>
|
||||
#include <kurldrag.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "urlnavigator.h"
|
||||
#include "dolphinview.h"
|
||||
#include "dolphin.h"
|
||||
|
||||
URLNavigatorButton::URLNavigatorButton(int index, URLNavigator* parent) :
|
||||
URLButton(parent),
|
||||
m_index(-1),
|
||||
m_listJob(0)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
setMinimumWidth(arrowWidth());
|
||||
setIndex(index);
|
||||
connect(this, SIGNAL(clicked()), this, SLOT(updateNavigatorURL()));
|
||||
|
||||
m_popupDelay = new QTimer(this);
|
||||
connect(m_popupDelay, SIGNAL(timeout()), this, SLOT(startListJob()));
|
||||
connect(this, SIGNAL(pressed()), this, SLOT(startPopupDelay()));
|
||||
}
|
||||
|
||||
URLNavigatorButton::~URLNavigatorButton()
|
||||
{
|
||||
}
|
||||
|
||||
void URLNavigatorButton::setIndex(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
index = 0;
|
||||
}
|
||||
|
||||
m_index = index;
|
||||
QString path(urlNavigator()->url().prettyURL());
|
||||
setText(path.section('/', index, index));
|
||||
|
||||
// Check whether the button indicates the full path of the URL. If
|
||||
// this is the case, the button is marked as 'active'.
|
||||
++index;
|
||||
QFont adjustedFont(font());
|
||||
if (path.section('/', index, index).isEmpty()) {
|
||||
setDisplayHintEnabled(ActivatedHint, true);
|
||||
adjustedFont.setBold(true);
|
||||
}
|
||||
else {
|
||||
setDisplayHintEnabled(ActivatedHint, false);
|
||||
adjustedFont.setBold(false);
|
||||
}
|
||||
|
||||
setFont(adjustedFont);
|
||||
update();
|
||||
}
|
||||
|
||||
int URLNavigatorButton::index() const
|
||||
{
|
||||
return m_index;
|
||||
}
|
||||
|
||||
void URLNavigatorButton::drawButton(QPainter* painter)
|
||||
{
|
||||
const int buttonWidth = width();
|
||||
const int buttonHeight = height();
|
||||
|
||||
QColor backgroundColor;
|
||||
QColor foregroundColor;
|
||||
const bool isHighlighted = isDisplayHintEnabled(EnteredHint) ||
|
||||
isDisplayHintEnabled(DraggedHint) ||
|
||||
isDisplayHintEnabled(PopupActiveHint);
|
||||
if (isHighlighted) {
|
||||
backgroundColor = KGlobalSettings::highlightColor();
|
||||
foregroundColor = KGlobalSettings::highlightedTextColor();
|
||||
}
|
||||
else {
|
||||
backgroundColor = colorGroup().background();
|
||||
foregroundColor = KGlobalSettings::buttonTextColor();
|
||||
}
|
||||
|
||||
// dimm the colors if the parent view does not have the focus
|
||||
const DolphinView* parentView = urlNavigator()->dolphinView();
|
||||
const Dolphin& dolphin = Dolphin::mainWin();
|
||||
|
||||
const bool isActive = (dolphin.activeView() == parentView);
|
||||
if (!isActive) {
|
||||
QColor dimmColor(colorGroup().background());
|
||||
foregroundColor = mixColors(foregroundColor, dimmColor);
|
||||
if (isHighlighted) {
|
||||
backgroundColor = mixColors(backgroundColor, dimmColor);
|
||||
}
|
||||
}
|
||||
|
||||
// draw button background
|
||||
painter->setPen(NoPen);
|
||||
painter->setBrush(backgroundColor);
|
||||
painter->drawRect(0, 0, buttonWidth, buttonHeight);
|
||||
|
||||
int textWidth = buttonWidth;
|
||||
if (isDisplayHintEnabled(ActivatedHint) && isActive || isHighlighted) {
|
||||
painter->setPen(foregroundColor);
|
||||
}
|
||||
else {
|
||||
// dimm the foreground color by mixing it with the background
|
||||
foregroundColor = mixColors(foregroundColor, backgroundColor);
|
||||
painter->setPen(foregroundColor);
|
||||
}
|
||||
|
||||
if (!isDisplayHintEnabled(ActivatedHint)) {
|
||||
// draw arrow
|
||||
const int border = 2; // horizontal border
|
||||
const int middleY = height() / 2;
|
||||
const int width = arrowWidth();
|
||||
const int startX = (buttonWidth - width) - (2 * border);
|
||||
const int startTopY = middleY - (width - 1);
|
||||
const int startBottomY = middleY + (width - 1);
|
||||
for (int i = 0; i < width; ++i) {
|
||||
painter->drawLine(startX, startTopY + i, startX + i, startTopY + i);
|
||||
painter->drawLine(startX, startBottomY - i, startX + i, startBottomY - i);
|
||||
}
|
||||
|
||||
textWidth = startX - border;
|
||||
}
|
||||
|
||||
const bool clipped = isTextClipped();
|
||||
const int align = clipped ? Qt::AlignVCenter : Qt::AlignCenter;
|
||||
painter->drawText(QRect(0, 0, textWidth, buttonHeight), align, text());
|
||||
|
||||
if (clipped) {
|
||||
// Blend the right area of the text with the background, as the
|
||||
// text is clipped.
|
||||
// TODO: use alpha blending in Qt4 instead of drawing the text that often
|
||||
const int blendSteps = 16;
|
||||
|
||||
QColor blendColor(backgroundColor);
|
||||
const int redInc = (foregroundColor.red() - backgroundColor.red()) / blendSteps;
|
||||
const int greenInc = (foregroundColor.green() - backgroundColor.green()) / blendSteps;
|
||||
const int blueInc = (foregroundColor.blue() - backgroundColor.blue()) / blendSteps;
|
||||
for (int i = 0; i < blendSteps; ++i) {
|
||||
painter->setClipRect(QRect(textWidth - i, 0, 1, buttonHeight));
|
||||
painter->setPen(blendColor);
|
||||
painter->drawText(QRect(0, 0, textWidth, buttonHeight), align, text());
|
||||
|
||||
blendColor.setRgb(blendColor.red() + redInc,
|
||||
blendColor.green() + greenInc,
|
||||
blendColor.blue() + blueInc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigatorButton::enterEvent(QEvent* event)
|
||||
{
|
||||
URLButton::enterEvent(event);
|
||||
|
||||
// if the text is clipped due to a small window width, the text should
|
||||
// be shown as tooltip
|
||||
if (isTextClipped()) {
|
||||
QToolTip::add(this, text());
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigatorButton::leaveEvent(QEvent* event)
|
||||
{
|
||||
URLButton::leaveEvent(event);
|
||||
QToolTip::remove(this);
|
||||
}
|
||||
|
||||
void URLNavigatorButton::dropEvent(QDropEvent* event)
|
||||
{
|
||||
KURL::List urls;
|
||||
if (KURLDrag::decode(event, urls) && !urls.isEmpty()) {
|
||||
setDisplayHintEnabled(DraggedHint, true);
|
||||
|
||||
QString path(urlNavigator()->url().prettyURL());
|
||||
path = path.section('/', 0, m_index);
|
||||
|
||||
Dolphin::mainWin().dropURLs(urls, KURL(path));
|
||||
|
||||
setDisplayHintEnabled(DraggedHint, false);
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigatorButton::dragEnterEvent(QDragEnterEvent* event)
|
||||
{
|
||||
event->accept(KURLDrag::canDecode(event));
|
||||
|
||||
setDisplayHintEnabled(DraggedHint, true);
|
||||
update();
|
||||
}
|
||||
|
||||
void URLNavigatorButton::dragLeaveEvent(QDragLeaveEvent* event)
|
||||
{
|
||||
URLButton::dragLeaveEvent(event);
|
||||
|
||||
setDisplayHintEnabled(DraggedHint, false);
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
void URLNavigatorButton::updateNavigatorURL()
|
||||
{
|
||||
URLNavigator* navigator = urlNavigator();
|
||||
assert(navigator != 0);
|
||||
navigator->setURL(navigator->url(m_index));
|
||||
}
|
||||
|
||||
void URLNavigatorButton::startPopupDelay()
|
||||
{
|
||||
if (m_popupDelay->isActive() || m_listJob) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_popupDelay->start(300, true);
|
||||
}
|
||||
|
||||
void URLNavigatorButton::stopPopupDelay()
|
||||
{
|
||||
m_popupDelay->stop();
|
||||
if (m_listJob) {
|
||||
m_listJob->kill();
|
||||
m_listJob = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void URLNavigatorButton::startListJob()
|
||||
{
|
||||
if (m_listJob) {
|
||||
return;
|
||||
}
|
||||
|
||||
KURL url = urlNavigator()->url(m_index);
|
||||
m_listJob = KIO::listDir(url, false, false);
|
||||
m_subdirs.clear(); // just to be ++safe
|
||||
|
||||
connect(m_listJob, SIGNAL(entries(KIO::Job*, const KIO::UDSEntryList &)),
|
||||
this, SLOT(entriesList(KIO::Job*, const KIO::UDSEntryList&)));
|
||||
connect(m_listJob, SIGNAL(result(KIO::Job*)), this, SLOT(listJobFinished(KIO::Job*)));
|
||||
}
|
||||
|
||||
void URLNavigatorButton::entriesList(KIO::Job* job, const KIO::UDSEntryList& entries)
|
||||
{
|
||||
if (job != m_listJob) {
|
||||
return;
|
||||
}
|
||||
|
||||
KIO::UDSEntryList::const_iterator it = entries.constBegin();
|
||||
KIO::UDSEntryList::const_iterator itEnd = entries.constEnd();
|
||||
while (it != itEnd) {
|
||||
QString name;
|
||||
bool isDir = false;
|
||||
KIO::UDSEntry entry = *it;
|
||||
KIO::UDSEntry::const_iterator atomIt = entry.constBegin();
|
||||
KIO::UDSEntry::const_iterator atomEndIt = entry.constEnd();
|
||||
|
||||
while (atomIt != atomEndIt) {
|
||||
switch ((*atomIt).m_uds) {
|
||||
case KIO::UDS_NAME:
|
||||
name = (*atomIt).m_str;
|
||||
break;
|
||||
case KIO::UDS_FILE_TYPE:
|
||||
isDir = S_ISDIR((*atomIt).m_long);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
++atomIt;
|
||||
}
|
||||
|
||||
if (isDir) {
|
||||
m_subdirs.append(name);
|
||||
}
|
||||
|
||||
++it;
|
||||
}
|
||||
|
||||
m_subdirs.sort();
|
||||
}
|
||||
|
||||
void URLNavigatorButton::listJobFinished(KIO::Job* job)
|
||||
{
|
||||
if (job != m_listJob) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (job->error() || m_subdirs.isEmpty()) {
|
||||
// clear listing
|
||||
return;
|
||||
}
|
||||
|
||||
setDisplayHintEnabled(PopupActiveHint, true);
|
||||
update(); // ensure the button is drawn highlighted
|
||||
QPopupMenu* dirsMenu = new QPopupMenu(this);
|
||||
//setPopup(dirsMenu);
|
||||
QStringList::const_iterator it = m_subdirs.constBegin();
|
||||
QStringList::const_iterator itEnd = m_subdirs.constEnd();
|
||||
int i = 0;
|
||||
while (it != itEnd) {
|
||||
dirsMenu->insertItem(*it, i);
|
||||
++i;
|
||||
++it;
|
||||
}
|
||||
|
||||
int result = dirsMenu->exec(urlNavigator()->mapToGlobal(geometry().bottomLeft()));
|
||||
|
||||
if (result >= 0) {
|
||||
KURL url = urlNavigator()->url(m_index);
|
||||
url.addPath(*m_subdirs.at(result));
|
||||
urlNavigator()->setURL(url);
|
||||
}
|
||||
|
||||
m_listJob = 0;
|
||||
m_subdirs.clear();
|
||||
delete dirsMenu;
|
||||
setDisplayHintEnabled(PopupActiveHint, false);
|
||||
}
|
||||
|
||||
int URLNavigatorButton::arrowWidth() const
|
||||
{
|
||||
int width = (height() / 2) - 7;
|
||||
if (width < 4) {
|
||||
width = 4;
|
||||
}
|
||||
return width;
|
||||
}
|
||||
|
||||
bool URLNavigatorButton::isTextClipped() const
|
||||
{
|
||||
int availableWidth = width();
|
||||
if (!isDisplayHintEnabled(ActivatedHint)) {
|
||||
availableWidth -= arrowWidth() + 1;
|
||||
}
|
||||
|
||||
QFontMetrics fontMetrics(font());
|
||||
return fontMetrics.width(text()) >= availableWidth;
|
||||
}
|
||||
|
||||
|
||||
void URLNavigatorButton::mousePressEvent(QMouseEvent * event)
|
||||
{
|
||||
if (event->button() == LeftButton)
|
||||
dragPos = event->pos();
|
||||
URLButton::mousePressEvent(event);
|
||||
}
|
||||
|
||||
void URLNavigatorButton::mouseMoveEvent(QMouseEvent * event)
|
||||
{
|
||||
if (event->state() & LeftButton) {
|
||||
int distance = (event->pos() - dragPos).manhattanLength();
|
||||
if (distance > QApplication::startDragDistance()*2)//don't start on small move (for submenu usability)
|
||||
startDrag();
|
||||
}
|
||||
URLButton::mouseMoveEvent(event);
|
||||
}
|
||||
|
||||
void URLNavigatorButton::startDrag()
|
||||
{
|
||||
KURL url = urlNavigator()->url(m_index);
|
||||
KURL::List lst;
|
||||
lst.append( url );
|
||||
KURLDrag *drag = new KURLDrag(lst, this);
|
||||
drag->drag();
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
|
||||
* Copyright (C) 2006 by Aaron J. Seigo (<aseigo@kde.org>) *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef URLNAVIGATORBUTTON_H
|
||||
#define URLNAVIGATORBUTTON_H
|
||||
|
||||
#include <qstringlist.h>
|
||||
|
||||
#include <kio/global.h>
|
||||
|
||||
#include <urlbutton.h>
|
||||
|
||||
class KURL;
|
||||
class URLNavigator;
|
||||
class QPainter;
|
||||
|
||||
namespace KIO
|
||||
{
|
||||
class Job;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Button of the URL navigator which contains one part of an URL.
|
||||
*
|
||||
* It is possible to drop a various number of items to an URL button. In this case
|
||||
* a context menu is opened where the user must select whether he wants
|
||||
* to copy, move or link the dropped items to the URL part indicated by
|
||||
* the button.
|
||||
*/
|
||||
class URLNavigatorButton : public URLButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
URLNavigatorButton(int index, URLNavigator* parent = 0);
|
||||
virtual ~URLNavigatorButton();
|
||||
void setIndex(int index);
|
||||
int index() const;
|
||||
|
||||
protected:
|
||||
virtual void drawButton(QPainter* painter);
|
||||
virtual void enterEvent(QEvent* event);
|
||||
virtual void leaveEvent(QEvent* event);
|
||||
//drag
|
||||
void mousePressEvent( QMouseEvent *event );
|
||||
void mouseMoveEvent( QMouseEvent *event );
|
||||
//drop
|
||||
virtual void dropEvent(QDropEvent* event);
|
||||
virtual void dragEnterEvent(QDragEnterEvent* event);
|
||||
virtual void dragLeaveEvent(QDragLeaveEvent* event);
|
||||
|
||||
private slots:
|
||||
void updateNavigatorURL();
|
||||
void startPopupDelay();
|
||||
void stopPopupDelay();
|
||||
void startListJob();
|
||||
void entriesList(KIO::Job* job, const KIO::UDSEntryList& entries);
|
||||
void listJobFinished(KIO::Job* job);
|
||||
|
||||
private:
|
||||
int arrowWidth() const;
|
||||
bool isTextClipped() const;
|
||||
void startDrag();
|
||||
|
||||
int m_index;
|
||||
QTimer* m_popupDelay;
|
||||
KIO::Job* m_listJob;
|
||||
QStringList m_subdirs;
|
||||
QPoint dragPos;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,362 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <qdatetime.h>
|
||||
#include <qdir.h>
|
||||
#include <qfile.h>
|
||||
|
||||
#include <klocale.h>
|
||||
#include <kstandarddirs.h>
|
||||
#include <kurl.h>
|
||||
|
||||
#include "viewproperties.h"
|
||||
#include "dolphinsettings.h"
|
||||
|
||||
#define FILE_NAME "/.d3lphinview"
|
||||
|
||||
ViewProperties::ViewProperties(KURL url) :
|
||||
m_changedProps(false),
|
||||
m_autoSave(true),
|
||||
m_subDirValidityHidden(false)
|
||||
{
|
||||
url.cleanPath(true);
|
||||
m_filepath = url.path();
|
||||
|
||||
if ((m_filepath.length() < 1) || (m_filepath.at(0) != QChar('/'))) {
|
||||
return;
|
||||
}
|
||||
|
||||
// we try and save it to a file in the directory being viewed
|
||||
// if the directory is not writable by the user or the directory is not local
|
||||
// we store the properties information in a local file
|
||||
DolphinSettings& settings = DolphinSettings::instance();
|
||||
if (settings.isSaveView()) {
|
||||
QString rootDir("/"); // TODO: should this be set to the root of the bookmark, if any?
|
||||
if (url.isLocalFile()) {
|
||||
QFileInfo info(m_filepath);
|
||||
|
||||
if (!info.isWritable()) {
|
||||
QString basePath = KGlobal::instance()->instanceName();
|
||||
basePath.append("/view_properties/local");
|
||||
rootDir = locateLocal("data", basePath);
|
||||
m_filepath = rootDir + m_filepath;
|
||||
}
|
||||
}
|
||||
else {
|
||||
QString basePath = KGlobal::instance()->instanceName();
|
||||
basePath.append("/view_properties/remote/").append(url.host());
|
||||
rootDir = locateLocal("data", basePath);
|
||||
m_filepath = rootDir + m_filepath;
|
||||
}
|
||||
|
||||
QDir dir(m_filepath);
|
||||
QFile file(m_filepath + FILE_NAME);
|
||||
|
||||
|
||||
PropertiesNode node(&file);
|
||||
|
||||
const bool isValidForSubDirs = !node.isEmpty() && node.isValidForSubDirs();
|
||||
while ((dir.path() != rootDir) && dir.cdUp()) {
|
||||
QFile file(dir.path() + FILE_NAME);
|
||||
PropertiesNode parentNode(&file);
|
||||
if (!parentNode.isEmpty()) {
|
||||
const bool inheritProps = parentNode.isValidForSubDirs() &&
|
||||
(parentNode.subDirProperties().m_timeStamp >
|
||||
node.localProperties().m_timeStamp);
|
||||
|
||||
if (inheritProps) {
|
||||
node.setLocalProperties(parentNode.subDirProperties());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_node = node;
|
||||
|
||||
if (isValidForSubDirs) {
|
||||
m_subDirValidityHidden = true;
|
||||
}
|
||||
m_node.setValidForSubDirs(false);
|
||||
}
|
||||
}
|
||||
|
||||
ViewProperties::~ViewProperties()
|
||||
{
|
||||
if (m_changedProps && m_autoSave) {
|
||||
save();
|
||||
}
|
||||
}
|
||||
|
||||
void ViewProperties::setViewMode(DolphinView::Mode mode)
|
||||
{
|
||||
if (m_node.localProperties().m_viewMode != mode) {
|
||||
m_node.setViewMode(mode);
|
||||
updateTimeStamp();
|
||||
}
|
||||
}
|
||||
|
||||
DolphinView::Mode ViewProperties::viewMode() const
|
||||
{
|
||||
return m_node.localProperties().m_viewMode;
|
||||
}
|
||||
|
||||
void ViewProperties::setShowHiddenFilesEnabled(bool show)
|
||||
{
|
||||
if (m_node.localProperties().m_showHiddenFiles != show) {
|
||||
m_node.setShowHiddenFilesEnabled(show);
|
||||
updateTimeStamp();
|
||||
}
|
||||
}
|
||||
|
||||
bool ViewProperties::isShowHiddenFilesEnabled() const
|
||||
{
|
||||
return m_node.localProperties().m_showHiddenFiles;
|
||||
}
|
||||
|
||||
void ViewProperties::setSorting(DolphinView::Sorting sorting)
|
||||
{
|
||||
if (m_node.localProperties().m_sorting != sorting) {
|
||||
m_node.setSorting(sorting);
|
||||
updateTimeStamp();
|
||||
}
|
||||
}
|
||||
|
||||
DolphinView::Sorting ViewProperties::sorting() const
|
||||
{
|
||||
return m_node.localProperties().m_sorting;
|
||||
}
|
||||
|
||||
void ViewProperties::setSortOrder(Qt::SortOrder sortOrder)
|
||||
{
|
||||
if (m_node.localProperties().m_sortOrder != sortOrder) {
|
||||
m_node.setSortOrder(sortOrder);
|
||||
updateTimeStamp();
|
||||
}
|
||||
}
|
||||
|
||||
Qt::SortOrder ViewProperties::sortOrder() const
|
||||
{
|
||||
return m_node.localProperties().m_sortOrder;
|
||||
}
|
||||
|
||||
void ViewProperties::setValidForSubDirs(bool valid)
|
||||
{
|
||||
if (m_node.isValidForSubDirs() != valid) {
|
||||
m_node.setValidForSubDirs(valid);
|
||||
updateTimeStamp();
|
||||
}
|
||||
}
|
||||
|
||||
bool ViewProperties::isValidForSubDirs() const
|
||||
{
|
||||
return m_node.isValidForSubDirs();
|
||||
}
|
||||
|
||||
void ViewProperties::setAutoSaveEnabled(bool autoSave)
|
||||
{
|
||||
m_autoSave = autoSave;
|
||||
}
|
||||
|
||||
bool ViewProperties::isAutoSaveEnabled() const
|
||||
{
|
||||
return m_autoSave;
|
||||
}
|
||||
|
||||
void ViewProperties::save()
|
||||
{
|
||||
DolphinSettings& settings = DolphinSettings::instance();
|
||||
if (settings.isSaveView()) {
|
||||
QFile file(m_filepath + FILE_NAME);
|
||||
KStandardDirs::makeDir(m_filepath);
|
||||
if (!file.open(IO_WriteOnly)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const Properties& props = m_node.localProperties();
|
||||
char viewMode = static_cast<char>(props.m_viewMode) + '0';
|
||||
char sorting = static_cast<char>(props.m_sorting) + '0';
|
||||
const bool isValidForSubDirs = m_node.isValidForSubDirs() || m_subDirValidityHidden;
|
||||
|
||||
QTextStream stream(&file);
|
||||
stream << "V01"
|
||||
<< viewMode
|
||||
<< (props.m_showHiddenFiles ? '1' : '0')
|
||||
<< props.m_timeStamp.toString("yyyyMMddhhmmss")
|
||||
<< sorting
|
||||
<< ((props.m_sortOrder == Qt::Ascending) ? 'A' : 'D')
|
||||
<< (isValidForSubDirs ? '1' : '0');
|
||||
|
||||
if (m_node.isValidForSubDirs()) {
|
||||
m_node.setSubDirProperties(props);
|
||||
}
|
||||
|
||||
if (isValidForSubDirs) {
|
||||
const Properties& subDirProps = m_node.subDirProperties();
|
||||
viewMode = static_cast<char>(subDirProps.m_viewMode) + '0';
|
||||
sorting = static_cast<char>(subDirProps.m_sorting) + '0';
|
||||
stream << viewMode
|
||||
<< (subDirProps.m_showHiddenFiles ? '1' : '0')
|
||||
<< subDirProps.m_timeStamp.toString("yyyyMMddhhmmss")
|
||||
<< sorting
|
||||
<< ((subDirProps.m_sortOrder == Qt::Ascending) ? 'A' : 'D');
|
||||
}
|
||||
file.flush();
|
||||
file.close();
|
||||
|
||||
m_changedProps = false;
|
||||
}
|
||||
}
|
||||
|
||||
void ViewProperties::updateTimeStamp()
|
||||
{
|
||||
m_changedProps = true;
|
||||
m_node.setTimeStamp(QDateTime::currentDateTime());
|
||||
}
|
||||
|
||||
ViewProperties::Properties::Properties() :
|
||||
m_showHiddenFiles(false),
|
||||
m_viewMode(DolphinView::IconsView),
|
||||
m_sorting(DolphinView::SortByName),
|
||||
m_sortOrder(Qt::Ascending)
|
||||
{
|
||||
m_timeStamp.setDate(QDate(1999, 12, 31));
|
||||
m_timeStamp.setTime(QTime(23, 59, 59));
|
||||
|
||||
m_viewMode = DolphinSettings::instance().defaultViewMode();
|
||||
}
|
||||
|
||||
ViewProperties::Properties::~Properties()
|
||||
{
|
||||
}
|
||||
|
||||
ViewProperties::PropertiesNode::PropertiesNode(QFile* file) :
|
||||
m_empty(true)
|
||||
{
|
||||
m_isValidForSubDirs = false;
|
||||
|
||||
if ((file != 0) && file->open(IO_ReadOnly)) {
|
||||
m_empty = false;
|
||||
|
||||
const int max_len = 41;
|
||||
static char buffer[max_len];
|
||||
|
||||
// TODO: use memset
|
||||
for (int i = 0; i < max_len; ++i) {
|
||||
buffer[i] = 0;
|
||||
}
|
||||
|
||||
file->readLine(buffer, max_len);
|
||||
|
||||
// Check version of viewproperties file. The initial format
|
||||
// sadly had no version numbering, which is indicated by a missing 'V'
|
||||
// as first letter. The current scheme uses V + 2 digits.
|
||||
int version = 0;
|
||||
int startInc = 0;
|
||||
if (buffer[0] == 'V') {
|
||||
startInc = 3; // skip version info (e. g. V01)
|
||||
version = 1;
|
||||
// currently no further versions are available:
|
||||
assert(buffer[1] == '0');
|
||||
assert(buffer[2] == '1');
|
||||
}
|
||||
|
||||
int readBytes = readProperties(m_props, &buffer[startInc], version);
|
||||
assert(readBytes >= 0);
|
||||
|
||||
// check whether sub directory properties are available
|
||||
m_isValidForSubDirs = (buffer[startInc + readBytes] != '0');
|
||||
if (m_isValidForSubDirs) {
|
||||
readBytes = readProperties(m_subDirProps,
|
||||
&buffer[startInc + readBytes + 1],
|
||||
version);
|
||||
}
|
||||
file->close();
|
||||
|
||||
m_empty = (readBytes <= 0);
|
||||
}
|
||||
}
|
||||
|
||||
ViewProperties::PropertiesNode::~PropertiesNode()
|
||||
{
|
||||
}
|
||||
|
||||
ViewProperties::PropertiesNode&
|
||||
ViewProperties::PropertiesNode::operator = (const PropertiesNode& node)
|
||||
{
|
||||
if (&node != this) {
|
||||
m_empty = node.m_empty;
|
||||
m_isValidForSubDirs = node.m_isValidForSubDirs;
|
||||
m_props = node.m_props;
|
||||
m_subDirProps = node.m_subDirProps;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
int ViewProperties::PropertiesNode::toInt(const char* buffer, int count) const
|
||||
{
|
||||
assert(buffer != 0);
|
||||
|
||||
int value = 0;
|
||||
for (int i = 0; i < count; ++i) {
|
||||
value = value * 10 + static_cast<int>(buffer[i] - '0');
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
int ViewProperties::PropertiesNode::readProperties(Properties& props,
|
||||
const char* buffer,
|
||||
int version)
|
||||
{
|
||||
props.m_viewMode = static_cast<DolphinView::Mode>(buffer[0] - '0');
|
||||
props.m_showHiddenFiles = (buffer[1] != '0');
|
||||
|
||||
// read date
|
||||
QDateTime timeStamp;
|
||||
const int year = toInt(&(buffer[2]), 4);
|
||||
const int month = toInt(&(buffer[6]), 2);
|
||||
const int day = toInt(&(buffer[8]), 2);
|
||||
QDate date(year, month, day);
|
||||
timeStamp.setDate(date);
|
||||
|
||||
// read time
|
||||
const int hour = toInt(&(buffer[10]), 2);
|
||||
const int minute = toInt(&(buffer[12]), 2);
|
||||
const int second = toInt(&(buffer[14]), 2);
|
||||
QTime time(hour, minute, second);
|
||||
timeStamp.setTime(time);
|
||||
|
||||
props.m_timeStamp = timeStamp;
|
||||
|
||||
int readCount = 16;
|
||||
if (version >= 1) {
|
||||
// read sorting type and sorting order
|
||||
props.m_sorting = static_cast<DolphinView::Sorting>(buffer[16] - '0');
|
||||
props.m_sortOrder = (buffer[17] == 'A') ? Qt::Ascending : Qt::Descending;
|
||||
readCount = 18;
|
||||
}
|
||||
|
||||
return (date.isValid() && time.isValid()) ? readCount : -1;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,129 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef VIEWPROPERTIES_H
|
||||
#define VIEWPROPERTIES_H
|
||||
|
||||
#include <dolphinview.h>
|
||||
#include <kurl.h>
|
||||
#include <qdatetime.h>
|
||||
class QFile;
|
||||
|
||||
/**
|
||||
* @short Maintains the view properties like 'view mode' or 'show hidden files' for a directory.
|
||||
*
|
||||
* The view properties are automatically stored inside
|
||||
* the directory as hidden file called '.dolphinview'. To read out the view properties
|
||||
* just construct an instance by passing the URL of the directory:
|
||||
* \code
|
||||
* ViewProperties props(KURL("/home/peter/Documents"));
|
||||
* const DolphinView::Mode mode = props.viewMode();
|
||||
* const bool showHiddenFiles = props.isShowHiddenFilesEnabled();
|
||||
* \endcode
|
||||
* When modifying a view property, the '.dolphinview' file is automatically updated
|
||||
* inside the destructor.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
// TODO: provide detailed design description, as mapping the user model to
|
||||
// the physical modal is not trivial.
|
||||
class ViewProperties
|
||||
{
|
||||
public:
|
||||
ViewProperties(KURL url);
|
||||
virtual ~ViewProperties();
|
||||
|
||||
void setViewMode(DolphinView::Mode mode);
|
||||
DolphinView::Mode viewMode() const;
|
||||
|
||||
void setShowHiddenFilesEnabled(bool show);
|
||||
bool isShowHiddenFilesEnabled() const;
|
||||
|
||||
void setSorting(DolphinView::Sorting sorting);
|
||||
DolphinView::Sorting sorting() const;
|
||||
|
||||
void setSortOrder(Qt::SortOrder sortOrder);
|
||||
Qt::SortOrder sortOrder() const;
|
||||
|
||||
void setValidForSubDirs(bool valid);
|
||||
bool isValidForSubDirs() const;
|
||||
|
||||
void setAutoSaveEnabled(bool autoSave);
|
||||
bool isAutoSaveEnabled() const;
|
||||
|
||||
void updateTimeStamp();
|
||||
void save();
|
||||
|
||||
private:
|
||||
class Properties
|
||||
{
|
||||
public:
|
||||
Properties();
|
||||
~Properties(); // non virtual
|
||||
|
||||
bool m_showHiddenFiles;
|
||||
DolphinView::Mode m_viewMode;
|
||||
QDateTime m_timeStamp;
|
||||
DolphinView::Sorting m_sorting;
|
||||
Qt::SortOrder m_sortOrder;
|
||||
};
|
||||
|
||||
class PropertiesNode
|
||||
{
|
||||
public:
|
||||
PropertiesNode(QFile* file = 0);
|
||||
~PropertiesNode();
|
||||
PropertiesNode& operator = (const PropertiesNode& node);
|
||||
bool isEmpty() const { return m_empty; }
|
||||
|
||||
void setValidForSubDirs(bool valid) { m_isValidForSubDirs = valid; }
|
||||
bool isValidForSubDirs() const { return m_isValidForSubDirs; }
|
||||
|
||||
void setLocalProperties(const Properties& props) { m_props = props; }
|
||||
const Properties& localProperties() const { return m_props; }
|
||||
|
||||
void setShowHiddenFilesEnabled(bool show) { m_props.m_showHiddenFiles = show; }
|
||||
void setViewMode(DolphinView::Mode mode) { m_props.m_viewMode = mode; }
|
||||
void setTimeStamp(const QDateTime timeStamp) { m_props.m_timeStamp = timeStamp; }
|
||||
const QDateTime& timeStamp() const { return m_props.m_timeStamp; }
|
||||
void setSorting(DolphinView::Sorting sorting) { m_props.m_sorting = sorting; }
|
||||
void setSortOrder(Qt::SortOrder sortOrder) { m_props.m_sortOrder = sortOrder; }
|
||||
|
||||
void setSubDirProperties(const Properties& props) { m_subDirProps = props; }
|
||||
const Properties& subDirProperties() const { return m_subDirProps; }
|
||||
|
||||
private:
|
||||
int toInt(const char* buffer, int count) const;
|
||||
int readProperties(Properties& props, const char* buffer, int version);
|
||||
|
||||
bool m_empty;
|
||||
bool m_isValidForSubDirs;
|
||||
Properties m_props;
|
||||
Properties m_subDirProps;
|
||||
};
|
||||
|
||||
bool m_changedProps;
|
||||
bool m_autoSave;
|
||||
bool m_subDirValidityHidden;
|
||||
QString m_filepath;
|
||||
PropertiesNode m_node;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,235 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "viewpropertiesdialog.h"
|
||||
#include <klocale.h>
|
||||
#include <qlabel.h>
|
||||
#include <qlayout.h>
|
||||
#include <qvbox.h>
|
||||
#include <qbuttongroup.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qradiobutton.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qsizepolicy.h>
|
||||
#include <qgroupbox.h>
|
||||
#include <qcombobox.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "viewproperties.h"
|
||||
#include "dolphinview.h"
|
||||
|
||||
ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
|
||||
KDialogBase(Plain, i18n("View Properties"),
|
||||
Ok|Apply|Cancel, Ok),
|
||||
m_isDirty(false),
|
||||
m_dolphinView(dolphinView)
|
||||
{
|
||||
assert(dolphinView != 0);
|
||||
|
||||
const int margin = KDialog::marginHint();
|
||||
const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
|
||||
const KURL& url = dolphinView->url();
|
||||
m_viewProps = new ViewProperties(url);
|
||||
m_viewProps->setAutoSaveEnabled(false);
|
||||
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(plainPage(), 0, spacingHint());
|
||||
|
||||
// create 'Properties' group containing view mode, sorting, sort order and show hidden files
|
||||
QGroupBox* propsGroup = new QGroupBox(2, Qt::Horizontal, i18n("Properties"), plainPage());
|
||||
propsGroup->setSizePolicy(sizePolicy);
|
||||
propsGroup->setMargin(margin);
|
||||
|
||||
new QLabel(i18n("View mode:"), propsGroup);
|
||||
m_viewMode = new QComboBox(propsGroup);
|
||||
m_viewMode->insertItem(SmallIcon("view_icon"), i18n("Icons"));
|
||||
m_viewMode->insertItem(SmallIcon("view_text"), i18n("Details"));
|
||||
m_viewMode->insertItem(SmallIcon("gvdirpart"), i18n("Previews"));
|
||||
const int index = static_cast<int>(m_viewProps->viewMode());
|
||||
m_viewMode->setCurrentItem(index);
|
||||
|
||||
new QLabel(i18n("Sorting:"), propsGroup);
|
||||
m_sorting = new QComboBox(propsGroup);
|
||||
m_sorting->insertItem("By Name");
|
||||
m_sorting->insertItem("By Size");
|
||||
m_sorting->insertItem("By Date");
|
||||
int sortingIdx = 0;
|
||||
switch (m_viewProps->sorting()) {
|
||||
case DolphinView::SortByName: sortingIdx = 0; break;
|
||||
case DolphinView::SortBySize: sortingIdx = 1; break;
|
||||
case DolphinView::SortByDate: sortingIdx = 2; break;
|
||||
default: break;
|
||||
}
|
||||
m_sorting->setCurrentItem(sortingIdx);
|
||||
|
||||
new QLabel(i18n("Sort order:"), propsGroup);
|
||||
m_sortOrder = new QComboBox(propsGroup);
|
||||
m_sortOrder->insertItem(i18n("Ascending"));
|
||||
m_sortOrder->insertItem(i18n("Descending"));
|
||||
const int sortOrderIdx = (m_viewProps->sortOrder() == Qt::Ascending) ? 0 : 1;
|
||||
m_sortOrder->setCurrentItem(sortOrderIdx);
|
||||
|
||||
m_showHiddenFiles = new QCheckBox(i18n("Show hidden files"), propsGroup);
|
||||
m_showHiddenFiles->setChecked(m_viewProps->isShowHiddenFilesEnabled());
|
||||
|
||||
// create 'Apply view properties to:' group
|
||||
QButtonGroup* buttonGroup = new QButtonGroup(3,
|
||||
Qt::Vertical,
|
||||
i18n("Apply view properties to:"),
|
||||
plainPage());
|
||||
buttonGroup->setSizePolicy(sizePolicy);
|
||||
buttonGroup->setMargin(margin);
|
||||
|
||||
m_applyToCurrentFolder = new QRadioButton(i18n("Current folder"), buttonGroup);
|
||||
buttonGroup->insert(m_applyToCurrentFolder);
|
||||
|
||||
m_applyToSubFolders = new QRadioButton(i18n("Current folder including all sub folders"), buttonGroup);
|
||||
buttonGroup->insert(m_applyToSubFolders);
|
||||
|
||||
m_applyToAllFolders = new QRadioButton(i18n("All folders"), buttonGroup);
|
||||
buttonGroup->insert(m_applyToAllFolders);
|
||||
|
||||
if (m_viewProps->isValidForSubDirs()) {
|
||||
m_applyToSubFolders->setChecked(true);
|
||||
}
|
||||
else {
|
||||
m_applyToCurrentFolder->setChecked(true);
|
||||
}
|
||||
|
||||
topLayout->addWidget(propsGroup);
|
||||
topLayout->addWidget(buttonGroup);
|
||||
|
||||
connect(m_viewMode, SIGNAL(activated(int)),
|
||||
this, SLOT(slotViewModeChanged(int)));
|
||||
connect(m_sorting, SIGNAL(activated(int)),
|
||||
this, SLOT(slotSortingChanged(int)));
|
||||
connect(m_sortOrder, SIGNAL(activated(int)),
|
||||
this, SLOT(slotSortOrderChanged(int)));
|
||||
connect(m_showHiddenFiles, SIGNAL(clicked()),
|
||||
this, SLOT(slotShowHiddenFilesChanged()));
|
||||
connect(m_applyToCurrentFolder, SIGNAL(clicked()),
|
||||
this, SLOT(slotApplyToCurrentFolder()));
|
||||
connect(m_applyToSubFolders, SIGNAL(clicked()),
|
||||
this, SLOT(slotApplyToSubFolders()));
|
||||
connect(m_applyToAllFolders, SIGNAL(clicked()),
|
||||
this, SLOT(slotApplyToAllFolders()));
|
||||
}
|
||||
|
||||
ViewPropertiesDialog::~ViewPropertiesDialog()
|
||||
{
|
||||
m_isDirty = false;
|
||||
delete m_viewProps;
|
||||
m_viewProps = 0;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotOk()
|
||||
{
|
||||
applyViewProperties();
|
||||
KDialogBase::slotOk();
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotApply()
|
||||
{
|
||||
applyViewProperties();
|
||||
KDialogBase::slotApply();
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotViewModeChanged(int index)
|
||||
{
|
||||
assert((index >= 0) && (index <= 2));
|
||||
m_viewProps->setViewMode(static_cast<DolphinView::Mode>(index));
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotSortingChanged(int index)
|
||||
{
|
||||
DolphinView::Sorting sorting = DolphinView::SortByName;
|
||||
switch (index) {
|
||||
case 1: sorting = DolphinView::SortBySize; break;
|
||||
case 2: sorting = DolphinView::SortByDate; break;
|
||||
default: break;
|
||||
}
|
||||
m_viewProps->setSorting(sorting);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotSortOrderChanged(int index)
|
||||
{
|
||||
Qt::SortOrder sortOrder = (index == 0) ? Qt::Ascending : Qt::Descending;
|
||||
m_viewProps->setSortOrder(sortOrder);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotShowHiddenFilesChanged()
|
||||
{
|
||||
const bool show = m_showHiddenFiles->isChecked();
|
||||
m_viewProps->setShowHiddenFilesEnabled(show);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotApplyToCurrentFolder()
|
||||
{
|
||||
m_viewProps->setValidForSubDirs(false);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotApplyToSubFolders()
|
||||
{
|
||||
m_viewProps->setValidForSubDirs(true);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotApplyToAllFolders()
|
||||
{
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::applyViewProperties()
|
||||
{
|
||||
if (m_applyToAllFolders->isChecked()) {
|
||||
if (m_isDirty) {
|
||||
const QString text(i18n("The view properties of all folders will be replaced. Do you want to continue?"));
|
||||
if (KMessageBox::questionYesNo(this, text) == KMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ViewProperties props(QDir::homeDirPath());
|
||||
props.setViewMode(m_viewProps->viewMode());
|
||||
props.setSorting(m_viewProps->sorting());
|
||||
props.setSortOrder(m_viewProps->sortOrder());
|
||||
props.setShowHiddenFilesEnabled(m_viewProps->isShowHiddenFilesEnabled());
|
||||
props.setValidForSubDirs(true);
|
||||
}
|
||||
else if (m_applyToSubFolders->isChecked() && m_isDirty) {
|
||||
const QString text(i18n("The view properties of all sub folders will be replaced. Do you want to continue?"));
|
||||
if (KMessageBox::questionYesNo(this, text) == KMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
m_viewProps->save();
|
||||
m_dolphinView->setViewProperties(*m_viewProps);
|
||||
m_isDirty = false;
|
||||
}
|
||||
|
||||
#include "viewpropertiesdialog.moc"
|
@ -0,0 +1,78 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef VIEWPROPERTIESDIALOG_H
|
||||
#define VIEWPROPERTIESDIALOG_H
|
||||
|
||||
#include <kdialogbase.h>
|
||||
|
||||
class QCheckBox;
|
||||
class QButtonGroup;
|
||||
class QComboBox;
|
||||
class QRadioButton;
|
||||
class ViewProperties;
|
||||
class DolphinView;
|
||||
|
||||
/**
|
||||
* @brief Dialog for changing the current view properties of a directory.
|
||||
*
|
||||
* It is possible to specify the view mode and whether hidden files
|
||||
* should be shown. The properties can be assigned to the current folder,
|
||||
* recursively to all sub folders or to all folders.
|
||||
*
|
||||
* @author Peter Penz
|
||||
*/
|
||||
class ViewPropertiesDialog : public KDialogBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ViewPropertiesDialog(DolphinView* dolphinView);
|
||||
virtual ~ViewPropertiesDialog();
|
||||
|
||||
protected slots:
|
||||
virtual void slotOk();
|
||||
virtual void slotApply();
|
||||
|
||||
private slots:
|
||||
void slotViewModeChanged(int index);
|
||||
void slotSortingChanged(int index);
|
||||
void slotSortOrderChanged(int index);
|
||||
void slotShowHiddenFilesChanged();
|
||||
void slotApplyToCurrentFolder();
|
||||
void slotApplyToSubFolders();
|
||||
void slotApplyToAllFolders();
|
||||
|
||||
private:
|
||||
bool m_isDirty;
|
||||
DolphinView* m_dolphinView;
|
||||
ViewProperties* m_viewProps;
|
||||
|
||||
QComboBox* m_viewMode;
|
||||
QComboBox* m_sorting;
|
||||
QComboBox* m_sortOrder;
|
||||
QCheckBox* m_showHiddenFiles;
|
||||
QRadioButton* m_applyToCurrentFolder;
|
||||
QRadioButton* m_applyToSubFolders;
|
||||
QRadioButton* m_applyToAllFolders;
|
||||
|
||||
void applyViewProperties();
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,66 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include "viewsettingspage.h"
|
||||
#include <qtabwidget.h>
|
||||
#include <qlayout.h>
|
||||
#include <qlabel.h>
|
||||
#include <kdialogbase.h>
|
||||
#include <klocale.h>
|
||||
#include "iconsviewsettingspage.h"
|
||||
#include "detailsviewsettingspage.h"
|
||||
|
||||
ViewSettingsPage::ViewSettingsPage(QWidget *parent) :
|
||||
SettingsPageBase(parent),
|
||||
m_iconsPage(0),
|
||||
m_detailsPage(0),
|
||||
m_previewsPage(0)
|
||||
{
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(parent, 0, KDialog::spacingHint());
|
||||
|
||||
QTabWidget* tabWidget = new QTabWidget(parent);
|
||||
|
||||
// initialize 'Icons' tab
|
||||
m_iconsPage = new IconsViewSettingsPage(DolphinIconsView::Icons, tabWidget);
|
||||
tabWidget->addTab(m_iconsPage, SmallIcon("view_icon"), i18n("Icons"));
|
||||
|
||||
// initialize 'Details' tab
|
||||
m_detailsPage = new DetailsViewSettingsPage(tabWidget);
|
||||
tabWidget->addTab(m_detailsPage, SmallIcon("view_text"), i18n("Details"));
|
||||
|
||||
// initialize 'Previews' tab
|
||||
m_previewsPage = new IconsViewSettingsPage(DolphinIconsView::Previews, tabWidget);
|
||||
tabWidget->addTab(m_previewsPage, SmallIcon("gvdirpart"), i18n("Previews"));
|
||||
|
||||
topLayout->addWidget(tabWidget, 0, 0 );
|
||||
}
|
||||
|
||||
ViewSettingsPage::~ViewSettingsPage()
|
||||
{
|
||||
}
|
||||
|
||||
void ViewSettingsPage::applySettings()
|
||||
{
|
||||
m_iconsPage->applySettings();
|
||||
m_detailsPage->applySettings();
|
||||
m_previewsPage->applySettings();
|
||||
}
|
||||
|
||||
#include "viewsettingspage.moc"
|
@ -0,0 +1,55 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
||||
#ifndef VIEWSETTINGSPAGE_H
|
||||
#define VIEWSETTINGSPAGE_H
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <settingspagebase.h>
|
||||
|
||||
class IconsViewSettingsPage;
|
||||
class DetailsViewSettingsPage;
|
||||
|
||||
/**
|
||||
* @brief Page for the 'View' settings of the Dolphin settings dialog.
|
||||
*
|
||||
* The vies settings allow to set the properties for the icons mode,
|
||||
* the details mode and the previews mode.
|
||||
*
|
||||
* @author Peter Penz <peter.penz@gmx.at>
|
||||
*/
|
||||
class ViewSettingsPage : public SettingsPageBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ViewSettingsPage(QWidget* parent);
|
||||
|
||||
virtual ~ViewSettingsPage();
|
||||
|
||||
/** @see SettingsPageBase::applySettings */
|
||||
virtual void applySettings();
|
||||
|
||||
private:
|
||||
IconsViewSettingsPage* m_iconsPage;
|
||||
DetailsViewSettingsPage* m_detailsPage;
|
||||
IconsViewSettingsPage* m_previewsPage;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,21 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Marcel Juhnke *
|
||||
* marrat@marrat.homelinux.org *
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
@ -0,0 +1,21 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Marcel Juhnke *
|
||||
* marrat@marrat.homelinux.org *
|
||||
* Copyright (C) 2006 by Peter Penz *
|
||||
* peter.penz@gmx.at *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
***************************************************************************/
|
Loading…
Reference in new issue