v0.2 Release

This commit is contained in:
Vlad Mihalachi 2013-09-27 08:43:16 +02:00
parent dd93860b49
commit fd65fe6dd4
94 changed files with 6875 additions and 156 deletions

8
.gitignore vendored
View File

@ -26,4 +26,10 @@ proguard/
*.iml
*.ipr
*.iws
.idea/
.idea/
# Android Studio
.gradle
/local.properties
/.idea/workspace.xml
.DS_Store

797
LICENSE
View File

@ -1,191 +1,678 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
1. Definitions.
Copyright (C) 2007 Free Software Foundation, Inc. [http://fsf.org/]
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
Preamble
"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
2. Grant of Copyright License.
The precise terms and conditions for copying, distribution and
modification follow.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
TERMS AND CONDITIONS
3. Grant of Patent License.
0. Definitions.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
"This License" refers to version 3 of the GNU General Public License.
4. Redistribution.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
You must give any other recipients of the Work or Derivative Works a copy of
this License; and
You must cause any modified files to carry prominent notices stating that You
changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
5. Submission of Contributions.
A "covered work" means either the unmodified Program or a work based
on the Program.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
6. Trademarks.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
7. Disclaimer of Warranty.
1. Source Code.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
8. Limitation of Liability.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
9. Accepting Warranty or Additional Liability.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
END OF TERMS AND CONDITIONS
The Corresponding Source for a work in source code form is that
same work.
APPENDIX: How to apply the Apache License to your work
2. Basic Permissions.
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
Copyright [yyyy] [name of copyright owner]
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
http://www.apache.org/licenses/LICENSE-2.0
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
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 3 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, see [http://www.gnu.org/licenses/].
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
[http://www.gnu.org/licenses/].
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
[http://www.gnu.org/philosophy/why-not-lgpl.html].

1
Turbo Editor/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

28
Turbo Editor/build.gradle Normal file
View File

@ -0,0 +1,28 @@
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.1.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 18
}
}
dependencies {
compile 'com.github.gabrielemariotti.changeloglib:library:1.2.0'
compile fileTree(dir: 'libs', include: '*.jar')
}

Binary file not shown.

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vmihalachi.turboeditor"
android:versionCode="2"
android:versionName="0.2"
android:installLocation="auto">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/nome_app_turbo_editor"
android:theme="@style/AppStyle">
<activity
android:name=".HomeActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"
android:hardwareAccelerated="false"
android:launchMode="singleTop"
android:alwaysRetainTaskState="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.action.EDIT"/>
<action android:name="android.intent.action.PICK"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="text/*"/>
<data android:pathPattern="*.txt"/>
<data android:pathPattern="*.html"/>
<data android:pathPattern="*.css"/>
<data android:pathPattern="*.js"/>
<data android:pathPattern="*.php"/>
</intent-filter>
</activity>
<activity
android:name="com.vmihalachi.turboeditor.PreferenceAbout"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/aboutactivity_info_category"/>
<activity
android:name="com.vmihalachi.turboeditor.SelectFileActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/open_a_file"/>
<meta-data
android:name="com.sec.android.support.multiwindow"
android:value="true"/>
<meta-data
android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W"
android:value="632.0dip"/>
<meta-data
android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H"
android:value="598.0dip"/>
<meta-data
android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W"
android:value="632.0dip"/>
<meta-data
android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H"
android:value="598.0dip"/>
</application>
</manifest>

View File

@ -0,0 +1,621 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS

View File

@ -0,0 +1,4 @@
turboeditor
===========
simple and beatiful android file editor

View File

@ -0,0 +1,68 @@
/*******************************************************************************
* Copyright (c) 2013 Gabriele Mariotti.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.vmihalachi.turboeditor;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import it.gmariotti.changelibs.library.view.ChangeLogListView;
/**
* Example with Dialog
*
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
*/
public class DialogStandardFragment extends DialogFragment {
public DialogStandardFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ChangeLogListView chgList = (ChangeLogListView) layoutInflater.inflate(R.layout.demo_changelog_fragment_dialogstandard, null);
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.aboutactivity_changelog)
.setView(chgList)
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
}
)
.setPositiveButton(R.string.vota, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getActivity().getPackageName())));
} catch (Exception e) {
}
}
})
.create();
}
}

View File

@ -0,0 +1,107 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
// ...
public class EditTextDialog extends DialogFragment implements TextView.OnEditorActionListener {
private EditText mEditText;
public static EditTextDialog newInstance(final String hint) {
final EditTextDialog f = new EditTextDialog();
// Supply num input as an argument.
final Bundle args = new Bundle();
args.putString("hint", hint);
f.setArguments(args);
return f;
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
final Dialog dialog = getDialog();
final String title = getString(R.string.codifica);
dialog.setTitle(title);
final View view = inflater.inflate(R.layout.dialog_fragment_edittext, container);
this.mEditText = (EditText) view.findViewById(android.R.id.edit);
// Show soft keyboard automatically
this.mEditText.setText(getArguments().getString("hint"));
this.mEditText.requestFocus();
dialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
this.mEditText.setOnEditorActionListener(this);
final Button button = (Button) view.findViewById(android.R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
returnData();
}
});
return view;
}
void returnData() {
EditDialogListener target = (EditDialogListener) getTargetFragment();
if (target == null) {
target = (EditDialogListener) getActivity();
}
target.onFinishEditDialog(this.mEditText.getText().toString(),
(Actions) getArguments().getSerializable("action"), getArguments().getString("hint"));
this.dismiss();
}
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
if (EditorInfo.IME_ACTION_DONE == actionId) {
returnData();
return true;
}
return false;
}
public enum Actions {
NewRemoteFolder, NewRemoteFile, NewLocalFolder, Rename, Move, EditEncoding
}
public interface EditDialogListener {
void onFinishEditDialog(String inputText, Actions action, String hint);
}
}

View File

@ -0,0 +1,980 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.Fragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Selection;
import android.text.Spannable;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.TextWatcher;
import android.text.style.ForegroundColorSpan;
import android.text.style.UnderlineSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;
import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent;
import com.vmihalachi.turboeditor.event.FileSavedEvent;
import com.vmihalachi.turboeditor.helper.PixelDipConverter;
import com.vmihalachi.turboeditor.helper.PreferenceHelper;
import com.vmihalachi.turboeditor.util.Patterns;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import de.greenrobot.event.EventBus;
public class EditorFragment extends Fragment implements EditTextDialog.EditDialogListener{
private static final String TAG = "A0A";
private Editor mEditor;
// Editor Variables
static boolean sWrapText;
static boolean sColorSyntax;
//
private String mCurrentEncoding;
private static String sFilePath;
public static EditorFragment newInstance(String filePath) {
EditorFragment frag = new EditorFragment();
Bundle args = new Bundle();
args.putString("filePath", filePath);
frag.setArguments(args);
return frag;
}
/**
* {@inheritDoc}
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
/**
* {@inheritDoc}
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Out custom layout
View rootView = inflater.inflate(R.layout.fragment_editor, container, false);
//
mEditor = (Editor) rootView.findViewById(R.id.editor);
return rootView;
}
/**
* {@inheritDoc}
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//
this.sFilePath = getArguments().getString("filePath");
this.mCurrentEncoding = PreferenceHelper.getEncoding(getActivity());
this.sColorSyntax = PreferenceHelper.getSyntaxHiglight(getActivity());
this.sWrapText = PreferenceHelper.getWrapText(getActivity());
String fileName = FilenameUtils.getName(getArguments().getString("filePath"));
//
getActivity().getActionBar().setTitle(fileName);
//
configureEditText();
//
try {
final FileInputStream inputStream =
new FileInputStream(
new File(this.sFilePath));
mEditor.setText(IOUtils.toString(inputStream, this.mCurrentEncoding));
inputStream.close();
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
EventBus.getDefault().post(new ErrorOpeningFileEvent());
}
}
/**
* {@inheritDoc}
*/
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_editor, menu);
menu.findItem(R.id.im_wrap_text).setChecked(this.sWrapText);
menu.findItem(R.id.im_syntax_highlight).setChecked(this.sColorSyntax);
super.onCreateOptionsMenu(menu, inflater);
}
/**
* {@inheritDoc}
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int i = item.getItemId();
if (i == R.id.im_save) {
new SaveFile().execute();
} else if (i == R.id.im_undo) {
this.mEditor.onKeyShortcut(KeyEvent.KEYCODE_Z, new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_Z));
} else if (i == R.id.im_redo) {
this.mEditor.onKeyShortcut(KeyEvent.KEYCODE_Y, new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_Y));
} else if (i == R.id.im_editor_encoding) {
showEncodingDialog();
} else if (i == R.id.im_syntax_highlight) {
item.setChecked(!item.isChecked());
PreferenceHelper.setSyntaxHiglight(getActivity(), item.isChecked());
updateTextEditor();
} else if (i == R.id.im_wrap_text) {
item.setChecked(!item.isChecked());
PreferenceHelper.setWrapText(getActivity(), item.isChecked());
updateTextEditor();
}
return super.onOptionsItemSelected(item);
}
private void showEncodingDialog() {
EditTextDialog dialogFrag = EditTextDialog.newInstance(this.mCurrentEncoding);
dialogFrag.setTargetFragment(this, 0);
dialogFrag.show(getFragmentManager().beginTransaction(), "encodingDialog");
}
/**
* {@inheritDoc}
*/
@Override
public void onFinishEditDialog(final String inputText, final EditTextDialog.Actions action, final String hint) {
PreferenceHelper.setEncoding(getActivity(), inputText);
updateTextEditor();
}
private void updateTextEditor() {
final boolean countLines = PreferenceHelper.getWrapText(getActivity());
final boolean syntaxHighlight = PreferenceHelper.getSyntaxHiglight(getActivity());
final String encoding = PreferenceHelper.getEncoding(getActivity());
if (this.sWrapText != countLines) {
this.sWrapText = countLines;
final String s = this.mEditor.getText().toString();
//inflateOfWrapText();
this.mEditor.setText(s);
configureEditText();
}
if (this.sColorSyntax != syntaxHighlight) {
this.sColorSyntax = syntaxHighlight;
final String s = this.mEditor.getText().toString();
//inflateOfWrapText();
this.mEditor.setText(s);
}
if (!this.mCurrentEncoding.equals(encoding)) {
try {
final byte[] oldText = this.mEditor.getText().toString().getBytes(this.mCurrentEncoding);
this.mEditor.setText(new String(oldText, encoding));
this.mCurrentEncoding = encoding;
} catch (UnsupportedEncodingException ignored) {
}
}
}
private void configureEditText(){
this.mEditor.setHorizontallyScrolling(!this.sWrapText);
if (!this.sWrapText) {
int paddingLeft = (int) PixelDipConverter.convertDpToPixel(25, getActivity());
mEditor.setPadding(paddingLeft, 0, 0, 0);
} else {
int paddingLeft = (int) PixelDipConverter.convertDpToPixel(5, getActivity());
mEditor.setPadding(paddingLeft, 0, 0, 0);
}
}
class SaveFile extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(final Void... voids) {
try {
FileUtils.write(new File(EditorFragment.this.sFilePath),
EditorFragment.this.mEditor.getText(),
EditorFragment.this.mCurrentEncoding);
} catch (IOException e) {
Log.e(TAG, e.getMessage(), e);
}
return null;
}
@Override
protected void onPostExecute(final Void aVoid) {
super.onPostExecute(aVoid);
EventBus.getDefault().post(new FileSavedEvent(EditorFragment.this.sFilePath));
}
}
public static class Editor extends EditText {
protected static final int
ID_SELECT_ALL =android. R.id.selectAll,
ID_CUT = android.R.id.cut,
ID_COPY = android.R.id.copy,
ID_PASTE = android.R.id.paste,
ID_UNDO = R.id.im_undo,
ID_REDO = R.id.im_redo;
private static final int SYNTAX_DELAY_MILLIS =
0;
private static final float textSize = 16;
private final Handler updateHandler =
new Handler();
private final TextPaint mPaintNumbers =
new TextPaint();
//private final Rect mLineBounds = new Rect();
private final float mScale;
private boolean modified = true;
/**
* Is undo/redo being performed? This member
* signals if an undo/redo operation is
* currently being performed. Changes in the
* text during undo/redo are not recorded
* because it would mess up the undo history.
*/
private boolean mIsUndoOrRedo = false;
/**
* The edit history.
*/
private EditHistory mEditHistory;
/**
* The change listener.
*/
private EditTextChangeListener
mChangeListener;
private final Runnable updateRunnable =
new Runnable() {
@Override
public void run() {
replaceTextKeepCursor(getText());
}
};
public Editor(Context context,
AttributeSet attrs) {
super(context, attrs);
this.mScale = context.getResources()
.getDisplayMetrics().density;
init(context);
}
// Init the class
private void init(final Context context) {
mEditHistory = new EditHistory();
mChangeListener =
new EditTextChangeListener();
addTextChangedListener(mChangeListener);
this.mPaintNumbers
.setColor(
getTextColors().getDefaultColor());
this.mPaintNumbers
.setTextSize(
textSize * this.mScale * 0.8f);
this.mPaintNumbers.setAntiAlias(true);
// Syntax editor
setFilters(new InputFilter[]{
new InputFilter() {
@Override
public CharSequence filter(
CharSequence source,
int start,
int end,
Spanned dest,
int dstart,
int dend) {
if (modified) {
return autoIndent(
source,
start,
end,
dest,
dstart,
dend);
}
return source;
}
}});
}
@Override
public boolean onKeyShortcut(
final int keyCode, final KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
return onTextContextMenuItem(
ID_SELECT_ALL);
case KeyEvent.KEYCODE_X:
return onTextContextMenuItem(ID_CUT);
case KeyEvent.KEYCODE_C:
return onTextContextMenuItem(ID_COPY);
case KeyEvent.KEYCODE_V:
return onTextContextMenuItem(ID_PASTE);
case KeyEvent.KEYCODE_Z:
if (getCanUndo()) {
return onTextContextMenuItem(ID_UNDO);
}
break;
case KeyEvent.KEYCODE_Y:
if (getCanRedo()) {
return onTextContextMenuItem(ID_REDO);
}
break;
}
return super.onKeyShortcut(keyCode, event);
}
@Override
public boolean onTextContextMenuItem(
final int id) {
if (id == ID_UNDO) {
undo();
return true;
} else if (id == ID_REDO) {
redo();
return true;
} else {
return super.onTextContextMenuItem(id);
}
}
@Override
public void onDraw(final Canvas canvas) {
if (!EditorFragment.sWrapText) {
final int max = getLineCount();
final TextPaint paint = mPaintNumbers;
for (int min = 0; min < max; min++) {
canvas.drawText(String.valueOf(min + 1),
0,
getLineBounds(min, null),
paint);
}
}
super.onDraw(canvas);
}
private CharSequence autoIndent(
CharSequence source,
int start,
int end,
Spanned dest,
int dstart,
int dend) {
if (end - start != 1 ||
start >= source.length() ||
source.charAt(start) != '\n' ||
dstart >= dest.length()) {
return source;
}
int istart = dstart;
int iend;
String indent = "";
// skip end of line if cursor is at the end of a line
if (dest.charAt(istart) == '\n') {
--istart;
}
// indent next line if this one isn't terminated
if (istart > -1) {
// skip white space
for (; istart > -1; --istart) {
char c = dest.charAt(istart);
if (c != ' ' &&
c != '\t') {
break;
}
}
if (istart > -1) {
char c = dest.charAt(istart);
if (c != ';' &&
c != '\n') {
indent = "\t";
}
}
}
// find start of previous line
for (; istart > -1; --istart) {
if (dest.charAt(istart) == '\n') {
break;
}
}
// cursor is in the first line
if (istart < 0) {
return source;
}
// span over previous indent
for (iend = ++istart;
iend < dend;
++iend) {
char c = dest.charAt(iend);
if (c != ' ' &&
c != '\t') {
break;
}
}
// copy white space of previous lines and append new indent
return "\n" + dest.subSequence(
istart,
iend) + indent;
}
private void cancelUpdate() {
updateHandler.removeCallbacks(
updateRunnable);
}
private void replaceTextKeepCursor(
Editable e) {
int p = getSelectionStart();
replaceText(e);
if (p > -1) {
setSelection(p);
}
}
private void replaceText(Editable e) {
disconnect();
modified = false;
setText(highlight(e));
modified = true;
addTextChangedListener(mChangeListener);
}
private CharSequence highlight(Editable editable) {
final String fileExtension = FilenameUtils.getExtension(EditorFragment.sFilePath);
editable.clearSpans();
if (editable.length() == 0) {
return editable;
}
if (fileExtension.contains("html")
|| fileExtension.contains("xml")) {
color(Patterns.HTML_OPEN_TAGS, editable);
color(Patterns.HTML_CLOSE_TAGS, editable);
color(Patterns.HTML_ATTRS, editable);
color(Patterns.GENERAL_STRINGS, editable);
color(Patterns.XML_COMMENTS, editable);
} else if (fileExtension.equals("css")) {
//color(CSS_STYLE_NAME, editable);
color(Patterns.CSS_ATTRS, editable);
color(Patterns.CSS_ATTR_VALUE, editable);
color(Patterns.GENERAL_COMMENTS, editable);
} else if (fileExtension.equals("js")) {
color(Patterns.GENERAL_KEYWORDS, editable);
color(Patterns.NUMBERS, editable);
color(Patterns.GENERAL_COMMENTS, editable);
} else {
color(Patterns.GENERAL_KEYWORDS, editable);
color(Patterns.NUMBERS, editable);
color(Patterns.GENERAL_COMMENTS, editable);
}
return editable;
}
private void color(Pattern pattern,
Editable editable) {
int color = 0;
if (pattern.equals(Patterns.HTML_OPEN_TAGS)
|| pattern.equals(Patterns.HTML_CLOSE_TAGS)
|| pattern.equals(Patterns.GENERAL_KEYWORDS)
//|| pattern.equals(CSS_STYLE_NAME)
) {
color = Patterns.COLOR_KEYWORD;
} else if (pattern.equals(Patterns.HTML_ATTRS)
|| pattern.equals(Patterns.CSS_ATTRS)) {
color = Patterns.COLOR_ATTR;
} else if (pattern.equals(Patterns.CSS_ATTR_VALUE)) {
color = Patterns.COLOR_ATTR_VALUE;
} else if (pattern.equals(Patterns.XML_COMMENTS)
|| pattern.equals(Patterns.GENERAL_COMMENTS)) {
color = Patterns.COLOR_COMMENT;
} else if (pattern.equals(
Patterns.GENERAL_STRINGS)) {
color = Patterns.COLOR_STRING;
} else if (pattern.equals(Patterns.NUMBERS)) {
color = Patterns.COLOR_NUMBER;
}
for (final Matcher m =
pattern.matcher(editable);
m.find(); ) {
editable.setSpan(
new ForegroundColorSpan(color),
m.start(),
m.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
// =================================================================== //
/**
* Disconnect this undo/redo from the text
* view.
*/
public void disconnect() {
removeTextChangedListener(mChangeListener);
}
/**
* Set the maximum history size. If size is
* negative, then history size is only limited
* by the device memory.
*/
public void setMaxHistorySize(
int maxHistorySize) {
mEditHistory.setMaxHistorySize(
maxHistorySize);
}
/**
* Clear history.
*/
public void clearHistory() {
mEditHistory.clear();
}
/**
* Can undo be performed?
*/
public boolean getCanUndo() {
return (mEditHistory.mmPosition > 0);
}
/**
* Perform undo.
*/
public void undo() {
EditItem edit = mEditHistory.getPrevious();
if (edit == null) {
return;
}
Editable text = getEditableText();
int start = edit.mmStart;
int end = start + (edit.mmAfter != null
? edit.mmAfter.length() : 0);
mIsUndoOrRedo = true;
text.replace(start, end, edit.mmBefore);
mIsUndoOrRedo = false;
// This will get rid of underlines inserted when editor tries to come
// up with a suggestion.
for (Object o : text.getSpans(0,
text.length(), UnderlineSpan.class)) {
text.removeSpan(o);
}
Selection.setSelection(text,
edit.mmBefore == null ? start
: (start + edit.mmBefore.length()));
}
/**
* Can redo be performed?
*/
public boolean getCanRedo() {
return (mEditHistory.mmPosition
< mEditHistory.mmHistory.size());
}
/**
* Perform redo.
*/
public void redo() {
EditItem edit = mEditHistory.getNext();
if (edit == null) {
return;
}
Editable text = getEditableText();
int start = edit.mmStart;
int end = start + (edit.mmBefore != null
? edit.mmBefore.length() : 0);
mIsUndoOrRedo = true;
text.replace(start, end, edit.mmAfter);
mIsUndoOrRedo = false;
// This will get rid of underlines inserted when editor tries to come
// up with a suggestion.
for (Object o : text.getSpans(0,
text.length(), UnderlineSpan.class)) {
text.removeSpan(o);
}
Selection.setSelection(text,
edit.mmAfter == null ? start
: (start + edit.mmAfter.length()));
}
/**
* Store preferences.
*/
public void storePersistentState(
SharedPreferences.Editor editor,
String prefix) {
// Store hash code of text in the editor so that we can check if the
// editor contents has changed.
editor.putString(prefix + ".hash",
String.valueOf(
getText().toString().hashCode()));
editor.putInt(prefix + ".maxSize",
mEditHistory.mmMaxHistorySize);
editor.putInt(prefix + ".position",
mEditHistory.mmPosition);
editor.putInt(prefix + ".size",
mEditHistory.mmHistory.size());
int i = 0;
for (EditItem ei : mEditHistory.mmHistory) {
String pre = prefix + "." + i;
editor.putInt(pre + ".start", ei.mmStart);
editor.putString(pre + ".before",
ei.mmBefore.toString());
editor.putString(pre + ".after",
ei.mmAfter.toString());
i++;
}
}
/**
* Restore preferences.
*
* @param prefix The preference key prefix
* used when state was stored.
* @return did restore succeed? If this is
* false, the undo history will be empty.
*/
public boolean restorePersistentState(
SharedPreferences sp, String prefix)
throws IllegalStateException {
boolean ok =
doRestorePersistentState(sp, prefix);
if (!ok) {
mEditHistory.clear();
}
return ok;
}
private boolean doRestorePersistentState(
SharedPreferences sp, String prefix) {
String hash =
sp.getString(prefix + ".hash", null);
if (hash == null) {
// No state to be restored.
return true;
}
if (Integer.valueOf(hash)
!= getText().toString().hashCode()) {
return false;
}
mEditHistory.clear();
mEditHistory.mmMaxHistorySize =
sp.getInt(prefix + ".maxSize", -1);
int count = sp.getInt(prefix + ".size", -1);
if (count == -1) {
return false;
}
for (int i = 0; i < count; i++) {
String pre = prefix + "." + i;
int start = sp.getInt(pre + ".start", -1);
String before =
sp.getString(pre + ".before", null);
String after =
sp.getString(pre + ".after", null);
if (start == -1
|| before == null
|| after == null) {
return false;
}
mEditHistory.add(
new EditItem(start, before, after));
}
mEditHistory.mmPosition =
sp.getInt(prefix + ".position", -1);
if (mEditHistory.mmPosition == -1) {
return false;
}
return true;
}
// =================================================================== //
/**
* Keeps track of all the edit history of a
* text.
*/
private final class EditHistory {
/**
* The position from which an EditItem will
* be retrieved when getNext() is called. If
* getPrevious() has not been called, this
* has the same value as mmHistory.size().
*/
private int mmPosition = 0;
/**
* Maximum undo history size.
*/
private int mmMaxHistorySize = -1;
/**
* The list of edits in chronological
* order.
*/
private final LinkedList<EditItem>
mmHistory = new LinkedList<EditItem>();
/**
* Clear history.
*/
private void clear() {
mmPosition = 0;
mmHistory.clear();
}
/**
* Adds a new edit operation to the history
* at the current position. If executed
* after a call to getPrevious() removes all
* the future history (elements with
* positions >= current history position).
*/
private void add(EditItem item) {
while (mmHistory.size() > mmPosition) {
mmHistory.removeLast();
}
mmHistory.add(item);
mmPosition++;
if (mmMaxHistorySize >= 0) {
trimHistory();
}
}
/**
* Set the maximum history size. If size is
* negative, then history size is only
* limited by the device memory.
*/
private void setMaxHistorySize(
int maxHistorySize) {
mmMaxHistorySize = maxHistorySize;
if (mmMaxHistorySize >= 0) {
trimHistory();
}
}
/**
* Trim history when it exceeds max history
* size.
*/
private void trimHistory() {
while (mmHistory.size()
> mmMaxHistorySize) {
mmHistory.removeFirst();
mmPosition--;
}
if (mmPosition < 0) {
mmPosition = 0;
}
}
/**
* Traverses the history backward by one
* position, returns and item at that
* position.
*/
private EditItem getPrevious() {
if (mmPosition == 0) {
return null;
}
mmPosition--;
return mmHistory.get(mmPosition);
}
/**
* Traverses the history forward by one
* position, returns and item at that
* position.
*/
private EditItem getNext() {
if (mmPosition >= mmHistory.size()) {
return null;
}
EditItem item = mmHistory.get(mmPosition);
mmPosition++;
return item;
}
}
/**
* Represents the changes performed by a
* single edit operation.
*/
private final class EditItem {
private final int mmStart;
private final CharSequence mmBefore;
private final CharSequence mmAfter;
/**
* Constructs EditItem of a modification
* that was applied at position start and
* replaced CharSequence before with
* CharSequence after.
*/
public EditItem(int start,
CharSequence before, CharSequence after) {
mmStart = start;
mmBefore = before;
mmAfter = after;
}
}
/**
* Class that listens to changes in the text.
*/
private final class EditTextChangeListener
implements TextWatcher {
/**
* The text that will be removed by the
* change event.
*/
private CharSequence mBeforeChange;
/**
* The text that was inserted by the change
* event.
*/
private CharSequence mAfterChange;
public void beforeTextChanged(
CharSequence s, int start, int count,
int after) {
if (mIsUndoOrRedo) {
return;
}
mBeforeChange =
s.subSequence(start, start + count);
}
public void onTextChanged(CharSequence s,
int start, int before,
int count) {
if (mIsUndoOrRedo) {
return;
}
mAfterChange =
s.subSequence(start, start + count);
mEditHistory.add(
new EditItem(start, mBeforeChange,
mAfterChange));
}
public void afterTextChanged(Editable s) {
cancelUpdate();
if (!EditorFragment.sColorSyntax || !modified) {
return;
}
updateHandler.postDelayed(
updateRunnable,
SYNTAX_DELAY_MILLIS);
}
}
}
}

View File

@ -0,0 +1,341 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import com.vmihalachi.turboeditor.event.ErrorOpeningFileEvent;
import com.vmihalachi.turboeditor.event.FileSavedEvent;
import com.vmihalachi.turboeditor.event.FileSelectedEvent;
import com.vmihalachi.turboeditor.event.NewFileOpened;
import de.greenrobot.event.EventBus;
public class HomeActivity extends Activity {
private String TAG = "A0A";
public static final int SELECT_FILE_CODE = 121;
/*
* This class provides a handy way to tie together the functionality of
* {@link DrawerLayout} and the framework <code>ActionBar</code> to implement the recommended
* design for navigation drawers.
*/
protected ActionBarDrawerToggle mDrawerToggle;
/*
* The Drawer Layout
*/
protected DrawerLayout mDrawerLayout;
/**
* {@inheritDoc}
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
checkTaskRoot();
//
setContentView(R.layout.activity_home);
//
setupDrawerLayout();
// Replace fragment
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
.commit();
/* First Time we open this activity */
if (savedInstanceState == null) {
// Open
mDrawerLayout.openDrawer(Gravity.START);
// Set the default title
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
}
//
receiveIntent();
}
/**
* {@inheritDoc}
*/
@Override
protected final void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
/**
* {@inheritDoc}
*/
@Override
public void onResume() {
super.onResume();
// Register the Event Bus for events
EventBus.getDefault().register(this);
}
/**
* {@inheritDoc}
*/
@Override
public void onPause() {
super.onPause();
// Unregister the Event Bus
EventBus.getDefault().unregister(this);
}
/**
* {@inheritDoc}
*/
@Override
protected void onDestroy() {
try {
closeKeyBoard();
} catch (NullPointerException e) {
Log.e(TAG, e.getMessage(), e);
}
super.onDestroy();
}
/**
* {@inheritDoc}
*/
@Override
public final void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
/**
* {@inheritDoc}
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_home, menu);
return super.onCreateOptionsMenu(menu);
}
/**
* {@inheritDoc}
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
/* If we clicked on the Navigation Drawer Menu item */
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
} else switch (item.getItemId()){
case R.id.im_open:
startActivityForResult(new Intent(HomeActivity.this, SelectFileActivity.class)
.putExtra("path", "")
.putExtra("action", SelectFileActivity.Actions.SelectFile),
SELECT_FILE_CODE);
return true;
case R.id.im_info:
startActivity(new Intent(this, PreferenceAbout.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* {@inheritDoc}
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == SELECT_FILE_CODE) {
String path = data.getStringExtra("path");
if(!TextUtils.isEmpty(path)){
EventBus.getDefault().postSticky(new NewFileOpened(path));
}
}
}
/**
*
* @param event
*/
public void onEvent(FileSelectedEvent event){
// Close the drawer
mDrawerLayout.closeDrawer(Gravity.LEFT);
// Replace fragment
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_editor, EditorFragment.newInstance(event.getPath()))
.commit();
}
/**
* When a file is saved
* Invoked by the EditorFragment
* @param event The event called
*/
public void onEvent(FileSavedEvent event){
try {
closeKeyBoard();
} catch (NullPointerException e) {
Log.e(TAG, e.getMessage(), e);
}
// Get intent, action and MIME type
final Intent intent = getIntent();
final String action = intent.getAction();
final String type = intent.getType();
if (Intent.ACTION_VIEW.equals(action)
|| Intent.ACTION_EDIT.equals(action)
|| Intent.ACTION_PICK.equals(action)
&& type != null) {
//This Activity was called by startActivityForResult
final Intent returnIntent = new Intent();
setResult(Activity.RESULT_OK, returnIntent);
// finish the activity
finish();
} else {
//This Activity was called by startActivity
//
mDrawerLayout.openDrawer(Gravity.LEFT);
//
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
// Replace fragment
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
.commit();
}
}
/**
*
*/
public void onEvent(ErrorOpeningFileEvent event){
//
mDrawerLayout.openDrawer(Gravity.LEFT);
//
getActionBar().setTitle(getString(R.string.nome_app_turbo_editor));
// Replace fragment
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_editor, new NoFileOpenedFragment())
.commit();
}
private void closeKeyBoard() throws NullPointerException {
// Central system API to the overall input method framework (IMF) architecture
InputMethodManager inputManager =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// Base interface for a remotable object
IBinder windowToken = getCurrentFocus().getWindowToken();
// Hide type
int hideType = InputMethodManager.HIDE_NOT_ALWAYS;
// Hide the KeyBoard
inputManager.hideSoftInputFromWindow(windowToken, hideType);
}
/**
*
*/
private void checkTaskRoot(){
}
/**
*
*/
private void setupDrawerLayout(){
final String defaultTitle = getString(R.string.nome_app_turbo_editor);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
/* Action Bar */
final ActionBar ab = getActionBar();
ab.setDisplayHomeAsUpEnabled(true);
ab.setHomeButtonEnabled(true);
/* Navigation drawer */
mDrawerToggle =
new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_drawer,
R.string.nome_app_turbo_editor,
R.string.nome_app_turbo_editor) {
@Override
public void onDrawerClosed(View view) {
invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu();
}
};
/* link the mDrawerToggle to the Drawer Layout */
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
final String action = intent.getAction();
final String type = intent.getType();
if (Intent.ACTION_VIEW.equals(action)
|| Intent.ACTION_EDIT.equals(action)
|| Intent.ACTION_PICK.equals(action)
&& type != null) {
// Post the NewFileOpened Event
EventBus.getDefault().postSticky(new NewFileOpened(intent.getData().getPath()));
}
}
/**
*
*/
private void receiveIntent(){
// Get intent, action and MIME type
final Intent intent = getIntent();
final String action = intent.getAction();
final String type = intent.getType();
if (Intent.ACTION_VIEW.equals(action)
|| Intent.ACTION_EDIT.equals(action)
|| Intent.ACTION_PICK.equals(action)
&& type != null) {
// Post the NewFileOpened Event
EventBus.getDefault().postSticky(new NewFileOpened(intent.getData().getPath()));
}
}
}

View File

@ -0,0 +1,16 @@
package com.vmihalachi.turboeditor;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class LicensesActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_licenses);
ListView listView = (ListView) findViewById(android.R.id.list);
listView.setAdapter(adapter);
}
}

View File

@ -0,0 +1,291 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.ListFragment;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.SparseBooleanArray;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.vmihalachi.turboeditor.event.FileSelectedEvent;
import com.vmihalachi.turboeditor.event.NewFileOpened;
import org.apache.commons.io.FilenameUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import de.greenrobot.event.EventBus;
public class NavigationDrawerListFragment extends ListFragment implements AbsListView.MultiChoiceModeListener {
List<String> fileNames;
ArrayAdapter<String> arrayAdapter;
/**
* {@inheritDoc}
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Out custom layout
View rootView = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
return rootView;
}
/**
* {@inheritDoc}
*/
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getListView().setMultiChoiceModeListener(this);
}
/**
* {@inheritDoc}
*/
@Override
public void onResume() {
super.onResume();
// Register the Event Bus for events
EventBus.getDefault().registerSticky(this);
//
refreshList();
}
/**
* {@inheritDoc}
*/
@Override
public void onPause() {
super.onPause();
// Unregister the Event Bus
EventBus.getDefault().unregister(this);
}
/**
* {@inheritDoc}
*/
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// don't open the same file twice
//if(this.mCurrentCheckedPosition == position) return;
// set current checked position
//this.mCurrentCheckedPosition = position;
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
// Path of the file selected
String filePath = savedPaths[position];
// Send the event that a file was selected
EventBus.getDefault().post(new FileSelectedEvent(filePath));
}
/**
* {@inheritDoc}
*/
@Override
public void onItemCheckedStateChanged(ActionMode actionMode, int position, long l, boolean isChecked) {
}
/**
* {@inheritDoc}
*/
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
MenuInflater inflater = actionMode.getMenuInflater();
inflater.inflate(R.menu.action_mode_navigation_drawer, menu);
return true;
}
/**
* {@inheritDoc}
*/
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}
/**
* {@inheritDoc}
*/
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.im_remove:
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
//
SparseBooleanArray checkedItems = getListView().getCheckedItemPositions();
//
if (checkedItems != null) {
for (int i=0; i<checkedItems.size(); i++) {
if (checkedItems.valueAt(i)) {
removePath(savedPaths[checkedItems.keyAt(i)], false);
}
}
refreshList();
}
actionMode.finish();
return true;
default:
return false;
}
}
/**
* {@inheritDoc}
*/
@Override
public void onDestroyActionMode(ActionMode actionMode) {
}
/**
* When a new file is opened
* Invoked by the main activity which receive the intent
* @param event The event called
*/
public void onEvent(NewFileOpened event){
EventBus.getDefault().removeStickyEvent(event);
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
for(int i = 0; i < savedPaths.length; i++){
if(savedPaths[i].equals(event.getFilePath())){
// Send the event that a file was selected
EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath()));
return;
}
}
addPath(event.getFilePath());
// Send the event that a file was selected
EventBus.getDefault().post(new FileSelectedEvent(event.getFilePath()));
}
private void addPath(String path){
addPath(path, true);
}
private void addPath(String path, boolean refresh){
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// Editor
SharedPreferences.Editor editor = sharedPreferences.edit();
// File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
// StringBuilder
StringBuilder sb = new StringBuilder();
// for cycle
for (int count = 0; count < savedPaths.length; count++) {
sb.append(savedPaths[count]).append(",");
}
// Append new path
sb.append(path);
// Put the string
editor.putString("savedPaths", sb.toString());
// Commit
editor.commit();
// Update list
//arrayAdapter.add(FilenameUtils.getName(path));
//arrayAdapter.notifyDataSetChanged();
if(refresh){
refreshList();
}
}
private void removePath(String path){
removePath(path, true);
}
private void removePath(String path, boolean refresh){
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// Editor
SharedPreferences.Editor editor = sharedPreferences.edit();
// File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
// StringBuilder
StringBuilder sb = new StringBuilder();
// for cycle
for (int count = 0; count < savedPaths.length; count++) {
if(path.equals(savedPaths[count])) continue;
sb.append(savedPaths[count]).append(",");
}
// Put the string
editor.putString("savedPaths", sb.toString());
// Commit
editor.commit();
// Update list
//arrayAdapter.remove(FilenameUtils.getName(path));
//arrayAdapter.notifyDataSetChanged();
if(refresh){
refreshList();
}
}
/* package */ void refreshList(){
// Shared Preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
// File paths saved in preferences
String[] savedPaths = sharedPreferences.getString("savedPaths", "").split(",");
// File names for the list
fileNames = new ArrayList<String>(savedPaths.length);
//
StringBuilder sb = new StringBuilder();
// for cycle to convert paths to names
for(String path : savedPaths){
if(!path.isEmpty()){
File file = new File(path);
if(file.exists()){
fileNames.add(FilenameUtils.getName(path));
sb.append(path).append(",");
}
}
}
// save list without empty or non existed files
sharedPreferences.edit().putString("savedPaths", sb.toString()).commit();
// Adapter
arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_drawer_list, fileNames);
// Set adapter
setListAdapter(arrayAdapter);
}
}

View File

@ -0,0 +1,42 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by Vlad on 9/23/13.
*/
public class NoFileOpenedFragment extends Fragment {
/**
* {@inheritDoc}
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Out custom layout
View rootView = inflater.inflate(R.layout.fragment_no_file_open, container, false);
return rootView;
}
}

View File

@ -0,0 +1,126 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
public class PreferenceAbout extends PreferenceActivity {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.about);
setupClickablePreferences();
}
public void setupClickablePreferences() {
final Preference email = findPreference("aboutactivity_authoremail"),
changelog = findPreference("aboutactivity_changelog"),
open_source_licenses = findPreference("aboutactivity_open_source_licenses"),
market = findPreference("aboutactivity_authormarket");
if (email != null) {
email.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(final Preference preference) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL, new String[]{"app.feedback.mail@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT, getApplicationName(getBaseContext()) + " " + getCurrentVersion(getBaseContext()));
i.putExtra(Intent.EXTRA_TEXT, "");
try {
startActivity(Intent.createChooser(i, getString(R.string.aboutactivity_authoremail_summary)));
} catch (android.content.ActivityNotFoundException ex) {
}
return false;
}
});
}
if (changelog != null) {
changelog.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(final Preference preference) {
openDialogFragment(new DialogStandardFragment());
return false;
}
});
}
if (open_source_licenses != null) {
open_source_licenses.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(final Preference preference) {
startActivity(new Intent(PreferenceAbout.this, LicensesActivity.class));
return false;
}
});
}
if (market != null) {
market.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(final Preference preference) {
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pub:Vlad+Mihalachi"))
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
} catch (Exception e) {
}
return false;
}
});
}
}
private void openDialogFragment(DialogStandardFragment dialogStandardFragment) {
if (dialogStandardFragment != null) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment prev = fm.findFragmentByTag("changelogdemo_dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
dialogStandardFragment.show(ft, "changelogdemo_dialog");
}
}
public static String getApplicationName(final Context context) {
final ApplicationInfo applicationInfo = context.getApplicationInfo();
return context.getString(applicationInfo.labelRes);
}
public static String getCurrentVersion(final Context context) {
try {
final PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(),
0);
return packageInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
return "";
}
}
}

View File

@ -0,0 +1,224 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import com.vmihalachi.turboeditor.adapter.AdapterDetailedList;
import com.vmihalachi.turboeditor.util.AlphanumComparator;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
/**
* Created by Vlad on 9/24/13.
*/
public class SelectFileActivity extends Activity implements AdapterView.OnItemClickListener {
private String currentFolder;
private ListView listView;
private boolean wantAFile, wantAFolder;
// The android SD card root path
public static final String SD_CARD_ROOT =
Environment.getExternalStorageDirectory()
.getAbsolutePath();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_file);
final Actions action = (Actions) getIntent().getExtras().getSerializable("action");
wantAFile = action == Actions.SelectFile;
wantAFolder = action == Actions.SelectFolder;
this.listView = (ListView) findViewById(android.R.id.list);
this.listView.setOnItemClickListener(this);
String path = getIntent().getExtras().getString("path");
if (TextUtils.isEmpty(path)) {
new UpdateList().execute(SD_CARD_ROOT);
} else {
new UpdateList().execute(path);
}
}
void returnData(String path) {
final Intent returnIntent = new Intent();
returnIntent.putExtra("path", path);
setResult(RESULT_OK, returnIntent);
// finish the activity
finish();
}
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
final String name = ((TextView) view.findViewById(android.R.id.title)).getText().toString();
if (name.equals("..")) {
vaiIndietro();
return;
} else if (name.equals(getString(R.string.home))) {
new UpdateList().execute(SD_CARD_ROOT);
return;
}
final File selectedFile = new File(currentFolder, name);
if (selectedFile.isFile() && wantAFile) {
returnData(selectedFile.getAbsolutePath());
} else if (selectedFile.isDirectory()) {
new UpdateList().execute(selectedFile.getAbsolutePath());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_select_file, menu);
menu.findItem(R.id.im_button).setTitle(getString(wantAFolder ? R.string.seleziona
: android.R.string.cancel));
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int i = item.getItemId();
if (i == R.id.im_button) {
if (wantAFolder) {
returnData(currentFolder);
} else if (wantAFile) {
returnData("");
}
}
return super.onOptionsItemSelected(item);
}
void vaiIndietro() {
if (currentFolder.equals("/")) {
new UpdateList().execute(SD_CARD_ROOT);
} else {
File tempFile = new File(currentFolder);
if (tempFile.isFile()) {
tempFile = tempFile.getParentFile()
.getParentFile();
} else {
tempFile = tempFile.getParentFile();
}
new UpdateList().execute(tempFile.getAbsolutePath());
}
}
private class UpdateList extends
AsyncTask<String, Void, LinkedList<AdapterDetailedList.FileDetail>> {
@Override
protected LinkedList<AdapterDetailedList.FileDetail> doInBackground(final String... params) {
try {
final String path = params[0];
if (TextUtils.isEmpty(path)) {
return null;
}
File tempFile = new File(path);
if (tempFile.isFile()) {
tempFile = tempFile.getParentFile();
}
final File[] files = tempFile.listFiles();
Arrays.sort(files,
getFileNameComparator());
final LinkedList<AdapterDetailedList.FileDetail> fileDetails = new LinkedList<AdapterDetailedList.FileDetail>();
final LinkedList<AdapterDetailedList.FileDetail>
folderDetails = new LinkedList<AdapterDetailedList.FileDetail>();
final AbstractMap<String, File> tempList = new HashMap<String, File>();
currentFolder = tempFile.getAbsolutePath();
if (files != null) {
for (final File f : files) {
if (f.isHidden()) {
continue;
} else if (f.isDirectory()
&& f.canRead()) {
folderDetails.add(new AdapterDetailedList.FileDetail(f.getName(),
getString(R.string.folder),
""));
} else if (f.isFile()) {
final long fileSize = f.length();
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy hh:mm a");
String date = format.format(f.lastModified());
fileDetails.add(new AdapterDetailedList.FileDetail(f.getName(),
FileUtils.byteCountToDisplaySize(fileSize), date));
}
tempList.put(f.getName(), f);
}
}
folderDetails.addAll(fileDetails);
return folderDetails;
} catch (Exception e) {
return null;
}
}
@Override
protected void onPostExecute(final LinkedList<AdapterDetailedList.FileDetail> names) {
boolean isRoot = currentFolder.equals("/");
if (names != null) {
listView.setAdapter(new AdapterDetailedList(getBaseContext(), names, isRoot));
}
super.onPostExecute(names);
}
public final Comparator<File> getFileNameComparator() {
return new AlphanumComparator() {
@Override
public String getTheString(Object obj) {
return ((File) obj).getName()
.toLowerCase();
}
};
}
}
public enum Actions {
SelectFile, SelectFolder
}
}

View File

@ -0,0 +1,260 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.adapter;
import android.content.Context;
import android.graphics.Typeface;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.vmihalachi.turboeditor.R;
import com.vmihalachi.turboeditor.helper.FileHelper;
import com.vmihalachi.turboeditor.util.MimeTypes;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Set;
public class AdapterDetailedList extends
ArrayAdapter<AdapterDetailedList.FileDetail> {
// Layout Inflater
final LayoutInflater inflater;
// The Context to get drawables from resources
private final Context context;
// The list of names
final LinkedList<FileDetail> fileDetails;
// Change HashMap<Integer, Boolean> to SparseBooleanArray
private HashMap<String, Boolean> mSelection =
new HashMap<String, Boolean>();
private final int default_text_color;
private final int highlight_text_color;
public static class ViewHolder {
// Text view with the name of the file
public TextView label;
// Text view with the name of the file
public TextView sizeLabel;
public TextView dateLabel;
// The icon of the file
public ImageView icon;
}
public AdapterDetailedList(final Context context,
final LinkedList<FileDetail> fileDetails,
final boolean isRoot) {
// super
super(context,
R.layout.item_file_list,
fileDetails);
this.context = context;
this.fileDetails = fileDetails;
// Cache the LayoutInflate to avoid asking for a new one each time.
this.inflater = LayoutInflater.from(context);
this.default_text_color = context.getResources().getColor(android.R.color.primary_text_dark);
this.highlight_text_color = context.getResources().getColor(android.R.color.holo_blue_dark);
if (!isRoot) {
this.fileDetails.addFirst(new FileDetail("..",
context.getString(R.string.folder), ""));
} else {
this.fileDetails.addFirst(new FileDetail(context.getString(R.string.home),
context.getString(R.string.folder),
""));
}
}
@Override
public View getView(final int position,
View convertView, final ViewGroup parent) {
if (convertView == null) {
convertView = this.inflater
.inflate(R.layout.item_file_list,
null);
final ViewHolder hold = new ViewHolder();
hold.label = (TextView) convertView.findViewById(android.R.id.title);
hold.sizeLabel = (TextView) convertView.findViewById(android.R.id.text1);
hold.dateLabel = (TextView) convertView.findViewById(android.R.id.text2);
hold.icon = (ImageView) convertView.findViewById(android.R.id.icon);
convertView.setTag(hold);
final FileDetail fileDetail = fileDetails.get(position);
final String fileName = fileDetail.getName();
setIcon(hold, fileDetail);
hold.label
.setText(fileName);
hold.sizeLabel
.setText(fileDetail.getSize());
hold.dateLabel
.setText(fileDetail.getDateModified());
if (isPositionChecked(fileName)) {
hold.label
.setTextColor(this.highlight_text_color);
hold.label
.setTypeface(null, Typeface.ITALIC);
} else {
hold.label
.setTextColor(this.default_text_color);
hold.label
.setTypeface(null, Typeface.NORMAL);
}
} else {
final ViewHolder hold = ((ViewHolder) convertView.getTag());
final FileDetail fileDetail = fileDetails.get(position);
final String fileName = fileDetail.getName();
setIcon(hold, fileDetail);
hold.label
.setText(fileName);
hold.sizeLabel
.setText(fileDetail.getSize());
hold.dateLabel
.setText(fileDetail.getDateModified());
if (isPositionChecked(fileName)) {
hold.label
.setTextColor(this.highlight_text_color);
hold.label
.setTypeface(null, Typeface.ITALIC);
} else {
hold.label
.setTextColor(this.default_text_color);
hold.label
.setTypeface(null, Typeface.NORMAL);
}
}
return convertView;
}
private void setIcon(final ViewHolder viewHolder,
final FileDetail fileDetail) {
final String fileName = fileDetail.getName();
final String ext = FileHelper.getExtension(fileName);
if (fileDetail.isFolder()) {
viewHolder.icon
.setImageResource(R.color.file_folder);
} else if (Arrays.asList(MimeTypes.MIME_HTML)
.contains(ext) || ext.endsWith("html")) {
viewHolder.icon
.setImageResource(R.color.file_html);
} else if (Arrays.asList(MimeTypes.MIME_CODE)
.contains(ext)
|| fileName.endsWith("css")
|| fileName.endsWith("js")) {
viewHolder.icon
.setImageResource(R.color.file_code);
} else if (Arrays.asList(MimeTypes.MIME_ARCHIVE).contains(ext)) {
viewHolder.icon
.setImageResource(R.color.file_archive);
} else if (Arrays.asList(MimeTypes.MIME_MUSIC)
.contains(ext)) {
viewHolder.icon
.setImageResource(R.color.file_media_music);
} else if (Arrays.asList(MimeTypes.MIME_PICTURE).contains(ext)) {
viewHolder.icon
.setImageResource(R.color.file_media_picture);
} else if (Arrays.asList(MimeTypes.MIME_VIDEO)
.contains(ext)) {
viewHolder.icon
.setImageResource(R.color.file_media_video);
} else {
viewHolder.icon
.setImageResource(R.color.file_text);
}
}
public void checkPosition(final String name) {
if (isPositionChecked(name)) {
removeSelection(name);
} else {
setNewSelection(name, true);
}
}
void setNewSelection(final String name,
final boolean value) {
this.mSelection.put(name, value);
notifyDataSetChanged();
}
boolean isPositionChecked(final String name) {
final Boolean result = this.mSelection.get(name);
return (result == null) ? false : result;
}
public Set<String> getCurrentCheckedPosition() {
return this.mSelection.keySet();
}
private void removeSelection(final String name) {
this.mSelection.remove(name);
notifyDataSetChanged();
}
public void clearSelection() {
this.mSelection = new HashMap<String, Boolean>();
notifyDataSetChanged();
}
public static class FileDetail {
private String name;
private String size;
private String dateModified;
private boolean isFolder;
public FileDetail(String name, String size,
String dateModified) {
this.name = name;
this.size = size;
this.dateModified = dateModified;
if (TextUtils.isEmpty(dateModified)) {
isFolder = true;
} else {
isFolder = false;
}
}
public String getDateModified() {
return dateModified;
}
public String getSize() {
return size;
}
public String getName() {
return name;
}
public boolean isFolder() {
return isFolder;
}
}
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.event;
public class CloseDrawerEvent {
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.event;
public class ErrorOpeningFileEvent {
}

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.event;
public class FileSavedEvent {
private String filePath;
public FileSavedEvent(String filePath) {
this.filePath = filePath;
}
public String getFilePath() {
return filePath;
}
}

View File

@ -0,0 +1,33 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.event;
public class FileSelectedEvent {
private String path;
public FileSelectedEvent(String path){
this.path = path;
}
public String getPath() {
return path;
}
}

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.event;
public class NewFileOpened {
private String filePath;
public NewFileOpened(String filePath) {
this.filePath = filePath;
}
public String getFilePath() {
return filePath;
}
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.event;
public class OpenDrawerEvent {
}

View File

@ -0,0 +1,49 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.helper;
import java.io.File;
public class FileHelper {
/**
* Get the extension of a file
* @param f the file
* @return the extension of a file
*/
public static String getExtension(File f) {
return getExtension(f.getAbsolutePath());
}
/**
* Get the extension from a file path
* @param path the path
* @return the extension from a file path
*/
public static String getExtension(String path) {
String ext = null;
String s = path;
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
}

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.helper;
import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
public final class PixelDipConverter {
private PixelDipConverter() {
}
/**
* This method convets dp unit to equivalent device specific value in pixels.
*
* @param dp A value in dp(Device independent pixels) unit. Which we need to convert into pixels
* @param context Context to get resources and device specific display metrics
* @return A float value to represent Pixels equivalent to dp according to device
*/
public static float convertDpToPixel(final float dp, final Context context) {
final Resources resources = context.getResources();
final DisplayMetrics metrics = resources.getDisplayMetrics();
final float px = dp * metrics.densityDpi / 160f;
return px;
}
/**
* This method converts device specific pixels to device independent pixels.
*
* @param px A value in px (pixels) unit. Which we need to convert into db
* @param context Context to get resources and device specific display metrics
* @return A float value to represent db equivalent to px value
*/
public static float convertPixelsToDp(final float px, final Context context) {
final Resources resources = context.getResources();
final DisplayMetrics metrics = resources.getDisplayMetrics();
final float dp = px / (metrics.densityDpi / 160f);
return dp;
}
}

View File

@ -0,0 +1,68 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.helper;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public final class PreferenceHelper {
private PreferenceHelper() {
}
/**
* Getter Methods
*/
public static SharedPreferences getPrefs(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
}
public static SharedPreferences.Editor getEditor(Context context) {
return getPrefs(context).edit();
}
public static boolean getWrapText(Context context) {
return getPrefs(context).getBoolean("editor_wrap_text", true);
}
public static boolean getSyntaxHiglight(Context context) {
return getPrefs(context).getBoolean("editor_syntax_highlight", true);
}
public static String getEncoding(Context context) {
return getPrefs(context).getString("editor_encoding", "UTF-8");
}
/**
* Setter Methods
*/
public static void setWrapText(Context context, boolean value) {
getEditor(context).putBoolean("editor_wrap_text", value).commit();
}
public static void setSyntaxHiglight(Context context, boolean value) {
getEditor(context).putBoolean("editor_syntax_highlight", value).commit();
}
public static void setEncoding(Context context, String value) {
getEditor(context).putString("editor_encoding", value).commit();
}
}

View File

@ -0,0 +1,41 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.helper;
public final class StringHelper {
private StringHelper() {
}
public static String join(final String... strings) {
final StringBuffer buffer = new StringBuffer();
for (String string : strings) {
if (!string.endsWith("/")) {
string += "/";
}
buffer.append(string);
}
String result = buffer.toString();
if (result.endsWith("/")) {
result = result.substring(0, result.length() - 1);
}
return result;
}
}

View File

@ -0,0 +1,138 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.util;/*
* The Alphanum Algorithm is an improved sorting algorithm for strings
* containing numbers. Instead of sorting numbers in ASCII order like
* a standard sort, this algorithm sorts numbers in numeric order.
*
* The Alphanum Algorithm is discussed at http://www.DaveKoelle.com
*
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
import java.util.Comparator;
/**
* This is an updated version with enhancements made by Daniel Migowski, Andre Bogus, and David
* Koelle
* <p/>
* To convert to use Templates (Java 1.5+): - Change "implements Comparator" to "implements
* Comparator<String>" - Change "compare(Object o1, Object o2)" to "compare(String s1, String s2)" -
* Remove the type checking and casting in compare().
* <p/>
* To use this class: Use the static "sort" method from the java.util.Collections class:
* Collections.sort(your list, new AlphanumComparator());
*/
public class AlphanumComparator implements Comparator {
private final boolean isDigit(char ch) {
return ch >= 48 && ch <= 57;
}
/**
* Length of string is passed in for improved efficiency (only need to calculate it once) *
*/
private final String getChunk(String s, int slength, int marker) {
StringBuilder chunk = new StringBuilder();
char c = s.charAt(marker);
chunk.append(c);
marker++;
if (isDigit(c)) {
while (marker < slength) {
c = s.charAt(marker);
if (!isDigit(c)) {
break;
}
chunk.append(c);
marker++;
}
} else {
while (marker < slength) {
c = s.charAt(marker);
if (isDigit(c)) {
break;
}
chunk.append(c);
marker++;
}
}
return chunk.toString();
}
public String getTheString(Object obj) {
return (String) obj;
}
public int compare(Object o1, Object o2) {
String s1 = getTheString(o1);
String s2 = getTheString(o2);
int thisMarker = 0;
int thatMarker = 0;
int s1Length = s1.length();
int s2Length = s2.length();
while (thisMarker < s1Length && thatMarker < s2Length) {
String thisChunk = getChunk(s1, s1Length, thisMarker);
thisMarker += thisChunk.length();
String thatChunk = getChunk(s2, s2Length, thatMarker);
thatMarker += thatChunk.length();
// If both chunks contain numeric characters, sort them numerically
int result = 0;
if (isDigit(thisChunk.charAt(0)) && isDigit(thatChunk.charAt(0))) {
// Simple chunk comparison by length.
int thisChunkLength = thisChunk.length();
result = thisChunkLength - thatChunk.length();
// If equal, the first different number counts
if (result == 0) {
for (int i = 0; i < thisChunkLength; i++) {
result = thisChunk.charAt(i) - thatChunk.charAt(i);
if (result != 0) {
return result;
}
}
}
} else {
result = thisChunk.compareTo(thatChunk);
}
if (result != 0) {
return result;
}
}
return s1Length - s2Length;
}
}

View File

@ -0,0 +1,146 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.util;
public class MimeTypes {
public static final String[] MIME_TEXT = {
"ajx",
"am",
"asa",
"asc",
"asp",
"aspx",
"awk",
"bat",
"c",
"cdf",
"cf",
"cfg",
"cfm",
"cgi",
"cnf",
"conf",
"cpp",
"css",
"csv",
"ctl",
"dat",
"dhtml",
"diz",
"file",
"forward",
"grp",
"h",
"hpp",
"hqx",
"hta",
"htaccess",
"htc",
"htm",
"html",
"htpasswd",
"htt",
"htx",
"in",
"inc",
"info",
"ini",
"ink",
"java",
"js",
"jsp",
"key",
"log",
"logfile",
"m3u",
"m4",
"m4a",
"mak",
"map",
"model",
"msg",
"nfo",
"nsi",
"info",
"old",
"pas",
"patch",
"perl",
"php",
"php2",
"php3",
"php4",
"php5",
"php6",
"phtml",
"pix",
"pl",
"pm",
"po",
"pwd",
"py",
"qmail",
"rb",
"rbl",
"rbw",
"readme",
"reg",
"rss",
"rtf",
"ruby",
"session",
"setup",
"sh",
"shtm",
"shtml",
"sql",
"ssh",
"stm",
"style",
"svg",
"tcl",
"text",
"threads",
"tmpl",
"tpl",
"txt",
"ubb",
"vbs",
"xhtml",
"xml",
"xrc",
"xsl"};
public static final String[] MIME_CODE =
{"xml", "php", "asp", "json", "wiki"};
public static final String[] MIME_HTML =
{"htm"};
public static final String[] MIME_PICTURE = {
"png", "jpeg", "jpg", "ico", "gif", "bmp",
"tiff"
};
public static final String[] MIME_MUSIC =
{"mp3", "avi", "flac", "mpga"};
public static final String[] MIME_VIDEO =
{"mp4", "mkv", "wmw"};
public static final String[] MIME_ARCHIVE = {
"zip", "tar", "gz", "bz2", "rar", "7z"
};
public static String[] USER_MIME_TEXT;
}

View File

@ -0,0 +1,66 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.util;
import java.util.regex.Pattern;
public class Patterns {
public static final int COLOR_NUMBER = 0xffff6600;
public static final int COLOR_KEYWORD = 0xff2f6f9f;
public static final int COLOR_ATTR = 0xff4f9fcf;
public static final int COLOR_ATTR_VALUE = 0xffd44950;
public static final int COLOR_STRING = 0xffd44950;
public static final int COLOR_COMMENT = 0xff999999;
// Strings
public static final Pattern GENERAL_STRINGS = Pattern.compile("\"(.*?)\"|'(.*?)'");
public static final Pattern HTML_OPEN_TAGS = Pattern.compile(
"<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>");
public static final Pattern HTML_CLOSE_TAGS = Pattern.compile(
"</([A-Za-z][A-Za-z0-9]*)\\b[^>]*>");
public static final Pattern HTML_ATTRS = Pattern.compile(
"(\\S+)=[\"']?((?:.(?![\"']?\\s+(?:\\S+)=|[>\"']))+.)[\"']?");
//static final Pattern CSS_STYLE_NAME= Pattern.compile(
// "[ \\t\\n\\r\\f](.+?)\\{([^\\)]+)\\}");
public static final Pattern CSS_ATTRS = Pattern.compile(
"(.+?):(.+?);");
public static final Pattern CSS_ATTR_VALUE = Pattern.compile(
":[ \t](.+?);");
public static final Pattern NUMBERS = Pattern.compile(
"\\b(\\d*[.]?\\d+)\\b");
public static final Pattern CSS_NUMBERS = Pattern.compile(
"/^auto$|^[+-]?[0-9]+\\.?([0-9]+)?(px|em|ex|%|in|cm|mm|pt|pc)?$/ig");
public static final Pattern GENERAL_KEYWORDS = Pattern.compile(
"\\b(alignas|alignof|and|and_eq|asm|auto|bitand|bitorbool|break|case|catch|char|"
+ "char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype"
+ "|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|"
+ "false|float|for|friend|function|goto|if|inline|int|mutable|namespace|new|noexcept|"
+ "not|not_eq|nullptr|operator|or|or_eq|private|protected|public|register|"
+ "reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast"
+ "|struct|switch|template|this|thread_local|throw|true|try|typedef|typeid|typename"
+ "|union|unsigned|using|var|virtual|void|volatile|wchar_t|while|xor|xor_eq)\\b");
// Comments
public static final Pattern XML_COMMENTS = Pattern.compile("(?s)<!--.*?-->");
public static final Pattern GENERAL_COMMENTS = Pattern.compile(
"/\\*(?:.|[\\n\\r])*?\\*/|//.*");
}

View File

@ -0,0 +1,44 @@
/*
* Copyright (C) 2013 Vlad Mihalachi
*
* This file is part of Turbo Editor.
*
* Turbo Editor 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 3 of the License, or
* (at your option) any later version.
*
* Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package com.vmihalachi.turboeditor.view;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
public class CapitalizedTextView extends TextView {
public CapitalizedTextView(final Context context) {
super(context);
}
public CapitalizedTextView(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
public CapitalizedTextView(final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setText(final CharSequence text, final BufferType type) {
super.setText(text.toString().toUpperCase(), type);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 926 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_shortAnimTime">
<item
android:drawable="@android:color/holo_blue_light"
android:state_pressed="true"/>
<item
android:drawable="@android:color/holo_blue_light"
android:state_enabled="true"
android:state_focused="true"/>
<item
android:drawable="@android:color/transparent"/>
</selector>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@id/fragment_editor"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<fragment android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:name="com.vmihalachi.turboeditor.NavigationDrawerListFragment"
android:id="@id/drawer_list"
android:layout_gravity="left"/>
</android.support.v4.widget.DrawerLayout>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:listSelector="@drawable/holo_selector"
android:cacheColorHint="@null"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:smoothScrollbar="true"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"/>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:listSelector="@drawable/holo_selector"
android:cacheColorHint="@null"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:smoothScrollbar="true"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"/>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<view xmlns:android="http://schemas.oiandroid.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="it.gmariotti.changelibs.library.view.ChangeLogListView"
android:id="@+id/view"
android:layout_gravity="center" />

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<EditText
android:id="@android:id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:imeOptions="actionDone"
android:layout_margin="@dimen/dialog_edittext_margin"/>
<View
android:background="?android:attr/listDivider"
android:layout_width="match_parent"
android:layout_height="@dimen/line_dimension"/>
<Button
android:background="@drawable/holo_selector"
android:gravity="center_vertical|center_horizontal"
android:id="@android:id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/dialog_button_padding"
android:maxLines="1"
android:text="@android:string/ok"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</LinearLayout>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:fillViewport="true">
<view
class="com.vmihalachi.turboeditor.EditorFragment$Editor"
android:id="@id/editor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@null"
android:bufferType="normal"
android:gravity="top|left"
android:imeOptions="actionDone|flagNoFullscreen"
android:inputType="textMultiLine|textImeMultiLine|textNoSuggestions"
android:maxLength="@integer/editor_max_file_size"
android:singleLine="false"
android:text="@null"
android:textSize="@dimen/text_size_editor" />
</ScrollView>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/navigation_drawer_background">
<ListView
android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadingEdge="none"
android:choiceMode="multipleChoiceModal"
android:cacheColorHint="@android:color/transparent"/>
<include android:id="@android:id/empty"
layout="@layout/fragment_no_file_open"/>
</LinearLayout>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="@dimen/text_size_mega_title"
android:fontFamily="sans-serif-light"
android:text="@string/open_a_file"
android:clickable="true" />

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItem"
android:gravity="center_vertical"
android:paddingLeft="@dimen/item_drawer_list_padding"
android:paddingRight="@dimen/item_drawer_list_padding"
android:maxLines="1"
android:fontFamily="sans-serif-light"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="@dimen/item_drawer_list_height"/>

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="@dimen/item_file_list_height">
<ImageView
android:id="@android:id/icon"
android:layout_width="@dimen/icon_dimension"
android:layout_height="@dimen/icon_dimension"
android:padding="@dimen/icon_padding"
android:layout_alignParentLeft="true" />
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@android:id/icon"
android:maxLines="1"
android:textSize="@dimen/text_size_title"
android:ellipsize="end"
android:padding="@dimen/minimum_padding" />
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_toRightOf="@android:id/icon"
android:layout_below="@android:id/title"
android:padding="@dimen/minimum_padding">
<TextView
android:id="@android:id/text1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:maxLines="1"
android:textSize="@dimen/text_size_subtitle"
android:enabled="false"
android:ellipsize="end"/>
<TextView
android:id="@android:id/text2"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:maxLines="1"
android:textSize="@dimen/text_size_subtitle"
android:enabled="false"
android:ellipsize="end"/>
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@id/im_remove"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_close_clear_cancel"/>
</menu>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@id/im_open"
android:title="@string/open_a_file"
android:titleCondensed="@string/open"
android:showAsAction="ifRoom"/>
<item
android:id="@id/im_info"
android:title="@string/info"
android:showAsAction="ifRoom"/>
</menu>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@id/im_button"
android:showAsAction="ifRoom|withText"/>
</menu>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@id/im_save"
android:showAsAction="always"
android:icon="@drawable/ic_action_tick"
android:title="@string/salva"/>
<item
android:id="@id/im_undo"
android:showAsAction="always"
android:icon="@drawable/ic_action_undo"
android:title="@string/testo_indietro"
/>
<item
android:id="@id/im_redo"
android:showAsAction="always"
android:icon="@drawable/ic_action_redo"
android:title="@string/testo_rifai"
/>
<item
android:title="@string/preferenze"
android:showAsAction="ifRoom|withText">
<menu>
<item
android:id="@id/im_editor_encoding"
android:showAsAction="ifRoom"
android:title="@string/codifica"/>
<item
android:id="@id/im_wrap_text"
android:showAsAction="ifRoom"
android:title="@string/wrap_the_text"
android:checkable="true"/>
<item
android:id="@id/im_syntax_highlight"
android:showAsAction="ifRoom"
android:title="@string/menu_syntax_highlight"
android:checkable="true"/>
</menu>
</item>
</menu>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">Neues Benutzerkonto</string>
<string name="attiva">Aktiv</string>
<string name="cancella">Löschen</string>
<string name="cancellazione">Dateien löschen…</string>
<string name="caricamento">Laden…</string>
<string name="cartella_locale_corrente">Aktueller lokaler Ordner</string>
<string name="chiave_privata">Privater Schlüssel</string>
<string name="chiaro">Hell</string>
<string name="codifica">Verschlüsseln</string>
<string name="condividi">Teilen</string>
<string name="crea_cartella_locale">Neuer lokaler Ordner</string>
<string name="crea_cartella_remota">Neuer Remote-Ordner</string>
<string name="disconneti">Trennen</string>
<string name="default_local_folder">Standard lokaler Ordner</string>
<string name="dove_scaricare">Wohin herunterladen?</string>
<string name="download">Herunterladen</string>
<string name="download_completato">Download abgeschlossen</string>
<string name="duplicate">Duplizieren</string>
<string name="fatto">Fertig</string>
<string name="home">Home</string>
<string name="host">Server</string>
<string name="info">Informationen</string>
<string name="locale">lokal</string>
<string name="log_in">Einloggen…</string>
<string name="modifica">bearbeiten</string>
<string name="muovi">Verschieben</string>
<string name="nascondi">Ausblenden</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo-Editor</string>
<string name="nome_utente">Benutzername</string>
<string name="passiva">Passiver Modus</string>
<string name="passphrase">Passphrase</string>
<string name="password">Kennwort</string>
<string name="password_summary">Leave it empty to prompt for it every session</string>
<string name="porta">Port</string>
<string name="preferenze">Einstellungen</string>
<string name="remoto">Remote</string>
<string name="riavva_per_tema">Um das Theme zu ändern, starten Sie die Anwendung neu</string>
<string name="rinomina">Umbenennen</string>
<string name="root">Standardverzeichnis</string>
<string name="salva">Speichern</string>
<string name="scuro">Dunkel</string>
<string name="seleziona">Auswählen</string>
<string name="seleziona_account">Benutzerkonto auswählen</string>
<string name="sicuro">Sind sie sicher?</string>
<string name="something_failed">Something failed</string>
<string name="skip_same_file">Dieselbe Datei nicht übertragen</string>
<string name="tema_app">Design</string>
<string name="tipo_connessione">Verbindungsart</string>
<string name="tipo_protocollo">Protokoll</string>
<string name="un_altra_cartella">Anderer Ordner</string>
<string name="use_passphrase">Passphrase benutzen</string>
<string name="upload">Hochladen</string>
<string name="upload_completato">Hochladen abgeschlossen</string>
<string name="what_to_do">Was möchten Sie tun?</string>
<string name="wrap_the_text">Zeilenumbruch</string>
<string name="menu_syntax_highlight">Syntax Hervorhebung</string>
<string name="testo_indietro">Ungeschehen machen</string>
<string name="testo_rifai">Rückgängig machen</string>
<string name="sync">Synchronisieren</string>
<string name="remote_folder_to_sync">Entfernten Ordner zum synchronisieren</string>
<string name="local_folder_to_sync">Lokalen Ordner zum synchronisieren</string>
<string name="vota">Bewerten</string>
<string name="inapp_unavailable">Kann keine Verbindung zu Google Play herstellen</string>
<string name="inapp_description">Unterstützen Sie die Entwicklung weiterer großer Features</string>
<string name="upgrade_premium">Auf Premium upgraden</string>
<string name="upgrade_premium_summary">Auf Premium upgraden und die Entwicklung von Turbo Client unterstützen</string>
<string name="download_unlocked_version">Entsperrte Version herunterladen</string>
<string name="inapp_second_description">Was ist ihnen Turbo Client wert? Geben sie einen Preis ein! </string>
<string name="inapp_first_description">Upgraden um diese Funktion freizuschalten:</string>
<string name="inapp_item_openandeditfiles">Beliebige Dateien öffnen und ändern</string>
<string name="inapp_item_backup_service">Backup Service für Backup und sichere Wiederherstellung Ihrer Daten. </string>
<string name="inapp_unlock_features">Premium Funktionen freischalten</string>
<string name="inapp_seconditem_description">Ich mag diese App!</string>
<string name="inapp_thirditem_description">Ich liebe diese App!</string>
<string name="backup_accounts">Backup the accounts</string>
<string name="restore_accounts">Accounts wiederherstellen</string>
<string name="share_accounts">Backup and share the accounts</string>
<string name="importing_accounts">Konten werden importiert...</string>
<string name="exporting_accounts">Konten werden exportiert...</string>
<string name="backup_not_found">Keine Sicherungen gefunden</string>
<string name="err_cant_open_the_file">Datei kann nicht geöffnet werden</string>
<string name="err_temp_folder_doesnt_exist">Temporärer Ordner ist nicht vorhanden</string>
<string name="err_occured">Es ist ein Fehler aufgetreten</string>
<string name="ui_ux">Benutzeroberfläche</string>
<string name="folder">Ordner</string>
<string name="remove">Entfernen</string>
<string name="modification_date">Änderungsdatum</string>
<string name="name">Name </string>
<string name="size">Größe</string>
<string name="sort">Sortieren</string>
<string name="open">Öffnen</string>
<string name="file_modified">Die Datei %1$s wurde geändert? Möchten Sie sie hochladen?</string>
<string name="file_saved_with_success">Die Datei %1$s wurde erfolgreich gespeichert!</string>
<string name="number_of_things_selected">%1$d ausgewählt</string>
<string name="crea_file_remoto">New remote file</string>
<string name="new_local_file">Neue lokale Datei</string>
<string name="create_new_account">Erstelle ein neues Benutzerkonto</string>
<string name="create_new_account_to_start">Erstellen Sie ein neues Konto um zu starten.</string>
<string name="type">Typ</string>
<string name="send_feedback">Feedback senden</string>
<string name="copy_url">URL kopieren</string>
<string name="cut">Ausschneiden</string>
<string name="paste">einfügen</string>
<string name="advanced">Erweitert</string>
<string name="auto">Auto</string>
<string name="bytes">Bytes</string>
<string name="unit_measurement_for_file_size">Maßeinheit für Dateigröße</string>
<string name="open_source_license">Open Source Lizenzen</string>
<string name="open_source_license_summary">Open-Source-Lizenzen anzeigen</string>
<string name="show_navigation_breadcrumb">Show navigation breadcrumb</string>
<string name="open_a_file">Datei öffnen</string>
<string name="open_this_time_only">Nur dieses Mal öffnen</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Informationen</string>
<string name="aboutactivity_app_category">App-Informationen</string>
<string name="aboutactivity_miscellaneous_category">Sonstiges</string>
<string name="aboutactivity_version">v %1$s</string>
<string name="aboutactivity_author">Autor</string>
<string name="aboutactivity_authorsite">Website</string>
<string name="aboutactivity_authorsite_summary">Die Website des Autors anzeigen</string>
<string name="aboutactivity_authoremail">E-Mail</string>
<string name="aboutactivity_authoremail_summary">Dem Autor eine E-Mail senden</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Twitter Profil anzeigen</string>
<string name="aboutactivity_authorgoogleplus">Google\u002B</string>
<string name="aboutactivity_authorgoogleplus_summary">Google\u002B Profil anzeigen</string>
<string name="aboutactivity_betatester">Werde Betatester</string>
<string name="aboutactivity_betatester_summary">Sei Teil der Community um Beta-Updates zu erhalten</string>
<string name="aboutactivity_helptranslate">Übersetze diese Anwendung</string>
<string name="aboutactivity_helptranslate_summary">Korrigiere Fehler oder füge eine neue Übersetzung hinzu</string>
<string name="aboutactivity_readme">Readme</string>
<string name="aboutactivity_readme_summary">Readme-Datei anzeigen</string>
<string name="aboutactivity_faq">Häufige Fragen / FAQ</string>
<string name="aboutactivity_faq_summary">App-FAQ anzeigen</string>
<string name="aboutactivity_changelog">Changelog</string>
<string name="aboutactivity_changelog_summary">Changelog anzeigen</string>
<string name="aboutactivity_license">Nutzungsbedingungen</string>
<string name="aboutactivity_license_summary">Nutzungsbedingungen anzeigen</string>
<string name="aboutactivity_license_accept">Akzeptieren</string>
<string name="aboutactivity_license_refuse">Ablehnen</string>
<string name="aboutactivity_privacy">Datenschutzrichtlinien</string>
<string name="aboutactivity_privacy_summary">Datenschutzrichtlinien anzeigen</string>
<string name="aboutactivity_todo">ToDo-Liste</string>
<string name="aboutactivity_todo_summary">ToDo-Liste anzeigen</string>
<string name="aboutactivity_donate">Spenden</string>
<string name="aboutactivity_donate_summary">Danke, dass du mich unterstützst</string>
<string name="aboutactivity_market">Play Store</string>
<string name="aboutactivity_market_summary">Feedback abgeben</string>
<string name="aboutactivity_authormarket">Weitere App</string>
<string name="aboutactivity_authormarket_summary">Weitere Apps des Autors anzeigen</string>
</resources>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">Νέος λογαριασμός</string>
<string name="attiva">Ενεργό</string>
<string name="cancella">Διαγραφή</string>
<string name="cancellazione">Διαγραφή αρχείων…</string>
<string name="caricamento">Φόρτωση…</string>
<string name="cartella_locale_corrente">Τρέχον τοπικός φάκελος</string>
<string name="chiave_privata">Ιδιωτικό Κλειδί</string>
<string name="chiaro">Φωτεινό</string>
<string name="codifica">Κωδικοποίηση</string>
<string name="condividi">Μοίρασε</string>
<string name="crea_cartella_locale">Νέος τοπικός φάκελος</string>
<string name="crea_cartella_remota">Νέος απομακρυσμένος φάκελος</string>
<string name="disconneti">Αποσύνδεση</string>
<string name="default_local_folder">Προεπιλεγμένος τοπικός φάκελος</string>
<string name="dove_scaricare">Που να γίνει η λήψη;</string>
<string name="download">Λήψη</string>
<string name="download_completato">Η λήψη ολοκληρώθηκε</string>
<string name="duplicate">Διπλότυπο</string>
<string name="fatto">Ολοκληρώθηκε</string>
<string name="home">Αρχή</string>
<string name="host">Διακομιστής</string>
<string name="info">Πληροφορίες</string>
<string name="locale">Τοπικά</string>
<string name="log_in">Σύνδεση με…</string>
<string name="modifica">Επεξεργασία</string>
<string name="muovi">Μετακίνηση</string>
<string name="nascondi">Απόκρυψη</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo Editor</string>
<string name="nome_utente">Όνομα χρήστη</string>
<string name="passiva">Παθητικό</string>
<string name="passphrase">Συνθηματικό</string>
<string name="password">Κωδικός</string>
<string name="password_summary">Αφήστε το κενό για να σας ρωτάει σε κάθε συνεδρία</string>
<string name="porta">Θύρα</string>
<string name="preferenze">Προτιμήσεις</string>
<string name="remoto">Απομακρυσμένα</string>
<string name="riavva_per_tema">Για να αλλάξετε το θέμα, κάντε επανεκκίνηση της εφαρμογής</string>
<string name="rinomina">Μετονομασία</string>
<string name="root">Προεπιλεγμένος απομακρυσμένος φάκελος</string>
<string name="salva">Αποθήκευση</string>
<string name="scuro">Σκοτεινό</string>
<string name="seleziona">Επιλογή</string>
<string name="seleziona_account">Επιλέξτε έναν λογαριασμό</string>
<string name="sicuro">Θέλετε σίγουρα;</string>
<string name="something_failed">Προέκυψε κάποια αποτυχία</string>
<string name="skip_same_file">Να μην γίνει μεταφορά του ίδιου αρχείου</string>
<string name="tema_app">Θέμα εφαρμογής</string>
<string name="tipo_connessione">Τύπος σύνδεσης</string>
<string name="tipo_protocollo">Τύπος πρωτοκόλλου</string>
<string name="un_altra_cartella">Άλλος φάκελος</string>
<string name="use_passphrase">Χρησιμοποιήστε ένα Συνθηματικό</string>
<string name="upload">Αποστολή</string>
<string name="upload_completato">Το ανέβασμα ολοκληρώθηκε</string>
<string name="what_to_do">Τι θέλετε να κάνετε;</string>
<string name="wrap_the_text">Αναδίπλωση κειμένου</string>
<string name="menu_syntax_highlight">Επισήμανση σύνταξης</string>
<string name="testo_indietro">Αναίρεση</string>
<string name="testo_rifai">Ακύρωση αναίρεσης</string>
<string name="sync">Συγχρονισμός</string>
<string name="remote_folder_to_sync">Απομακρυσμένος φάκελος για συγχρονισμό</string>
<string name="local_folder_to_sync">Τοπικός φάκελος για συγχρονισμό</string>
<string name="vota">Βαθμολογία</string>
<string name="inapp_unavailable">Δεν είναι δυνατή η επικοινωνία με το Google Play</string>
<string name="inapp_description">Και υποστιρίξτε την ανάπτυξη άλλων σπουδαίων δυνατοτήτων</string>
<string name="upgrade_premium">Αναβάθμιση σε Premium</string>
<string name="upgrade_premium_summary">Αναβάθμιση σε Premium και υποστήριξη της ανάπτυξης του Turbo Client!</string>
<string name="download_unlocked_version">Κατεβάστε την ξεκλειδωμένη έκδοση</string>
<string name="inapp_second_description">Τι αξίζει το Turbo Client για εσάς; Ορίστε την τιμή! </string>
<string name="inapp_first_description">Αναβάθμιση για ξεκλείδωμα των χαρακτηριστικών:</string>
<string name="inapp_item_openandeditfiles">Δυνατότητα να ανοίξετε και να τροποποιήσετε οποιοδήποτε τύπο αρχείου.</string>
<string name="inapp_item_backup_service">Υπηρεσία αντιγράφων ασφαλείας για να δημιουργήσετε αντίγραφα και να επαναφέρετε τα δεδομένα σας με ασφάλεια. </string>
<string name="inapp_unlock_features">Ξεκλείδωμα των Premium χαρακτηριστικών</string>
<string name="inapp_seconditem_description">Συμπαθώ πραγματικά αυτή την εφαρμογή!</string>
<string name="inapp_thirditem_description">Αγαπώ αυτή την εφαρμογή!</string>
<string name="backup_accounts">Αντίγραφα ασφαλείας λογαριασμών</string>
<string name="restore_accounts">Επαναφορά των λογαριασμών</string>
<string name="share_accounts">Αντίγραφα ασφαλείας και μοίρασμα λογαριασμών</string>
<string name="importing_accounts">Εισαγωγή λογαριασμών…</string>
<string name="exporting_accounts">Εξαγωγή λογαριασμών...</string>
<string name="backup_not_found">Δεν βρέθηκε κανένα αντίγραφο ασφαλείας</string>
<string name="err_cant_open_the_file">Δεν μπορεί να ανοίξει το αρχείο</string>
<string name="err_temp_folder_doesnt_exist">Ο φάκελος προσωρινής αποθήκευσης δεν υπάρχει</string>
<string name="err_occured">Προέκυψε ένα σφάλμα</string>
<string name="ui_ux">Περιβάλλον χρήσης</string>
<string name="folder">Φάκελος</string>
<string name="remove">Αφαίρεση</string>
<string name="modification_date">Ημ. τροποποίησης</string>
<string name="name">Όνομα</string>
<string name="size">Μέγεθος</string>
<string name="sort">Ταξινόμηση</string>
<string name="open">Άνοιγμα</string>
<string name="file_modified">Το αρχείο %1$s τροποποιήθηκε, θέλετε να το ανεβάσετε;</string>
<string name="file_saved_with_success">Το αρχείο %1$s αποθηκεύτηκε με επιτυχία!</string>
<string name="number_of_things_selected">%1$d επιλέχθηκε</string>
<string name="crea_file_remoto">Νέα απομακρυσμένο αρχείο</string>
<string name="new_local_file">Νέο τοπικό αρχείο</string>
<string name="create_new_account">Δημιουργία νέου λογαριασμού</string>
<string name="create_new_account_to_start">Δημιουργήσετε ένα νέο λογαριασμό για να ξεκινήσετε.</string>
<string name="type">Τύπος</string>
<string name="send_feedback">Αποστολή σχολίων</string>
<string name="copy_url">Αντιγραφή συνδέσμου</string>
<string name="cut">Αποκοπή</string>
<string name="paste">επικόληση</string>
<string name="advanced">Για προχωρημένους</string>
<string name="auto">Αυτόματα</string>
<string name="bytes">Bytes</string>
<string name="unit_measurement_for_file_size">Μονάδα μέτρησης για το μέγεθος του αρχείου</string>
<string name="open_source_license">Άδειες χρήσης ανοιχτού κώδικα</string>
<string name="open_source_license_summary">Προβολή αδειών χρήσης ανοιχτού κώδικα</string>
<string name="show_navigation_breadcrumb">Εμφάνιση βοηθού πλοήγησης</string>
<string name="open_a_file">Άνοιγμα αρχείου</string>
<string name="open_this_time_only">Open this time only</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Πληροφορίες</string>
<string name="aboutactivity_app_category">Πληροφορίες εφαρμογής</string>
<string name="aboutactivity_miscellaneous_category">Διάφορα</string>
<string name="aboutactivity_version">Έκδοση %1$s</string>
<string name="aboutactivity_author">Δημιουργός</string>
<string name="aboutactivity_authorsite">Ιστότοπος δημιουργού</string>
<string name="aboutactivity_authorsite_summary">Προβολή ιστότοπου δημιουργού</string>
<string name="aboutactivity_authoremail">Email δημιουργού</string>
<string name="aboutactivity_authoremail_summary">Αποστολή email στον δημιουργό</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Προβολή σελίδας στο Twitter</string>
<string name="aboutactivity_authorgoogleplus">Google Plus</string>
<string name="aboutactivity_authorgoogleplus_summary">Προβολή σελίδας στο Google Plus</string>
<string name="aboutactivity_betatester">Γίνετε beta tester</string>
<string name="aboutactivity_betatester_summary">Γίνετε μέρος της κοινότητας για να λαμβάνετε ενημερώσεις beta εκδόσεων</string>
<string name="aboutactivity_helptranslate">Μεταφράστε την εφαρμογή</string>
<string name="aboutactivity_helptranslate_summary">Διορθώσει κάποια λάθη ή προσθέσετε μια νέα μετάφραση</string>
<string name="aboutactivity_readme">Αρχείο πληροφοριών</string>
<string name="aboutactivity_readme_summary">Διαβάστε την αναφορά</string>
<string name="aboutactivity_faq">ΣΥΧΝΈΣ ΕΡΩΤΉΣΕΙΣ</string>
<string name="aboutactivity_faq_summary">Προβολή ΣΕΑ εφαρμογής</string>
<string name="aboutactivity_changelog">Αρχείο καταγραφής αλλαγών</string>
<string name="aboutactivity_changelog_summary">Προβολή αρχείου καταγραφής αλλαγών</string>
<string name="aboutactivity_license">Όροι παροχής υπηρεσιών</string>
<string name="aboutactivity_license_summary">Διαβάστε τους όρους παροχής υπηρεσιών</string>
<string name="aboutactivity_license_accept">Αποδοχή</string>
<string name="aboutactivity_license_refuse">Άρνηση</string>
<string name="aboutactivity_privacy">Πολιτική απορρήτου</string>
<string name="aboutactivity_privacy_summary">Διαβάζετε την πολιτική απορρήτου</string>
<string name="aboutactivity_todo">Λίστα ToDo</string>
<string name="aboutactivity_todo_summary">Διαβάστε τη λίστα todo</string>
<string name="aboutactivity_donate">Κάντε μια δωρεά</string>
<string name="aboutactivity_donate_summary">Σας ευχαριστούμε για την υποστήριξη!</string>
<string name="aboutactivity_market">Play Store</string>
<string name="aboutactivity_market_summary">Αποστολή σχολίων και βαθμολογίας!</string>
<string name="aboutactivity_authormarket">Κατάστημα του δημιουργού</string>
<string name="aboutactivity_authormarket_summary">Προβολή άλλων εφαρμογών του δημιουργού!</string>
</resources>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">Nuovo account</string>
<string name="attiva">Attiva</string>
<string name="cancella">Cancella</string>
<string name="cancellazione">Cancella files…</string>
<string name="caricamento">Caricamento…</string>
<string name="cartella_locale_corrente">Cartella locale corrente</string>
<string name="chiave_privata">Chiave Privata</string>
<string name="chiaro">Chiaro</string>
<string name="codifica">Codifica</string>
<string name="condividi">Condividi</string>
<string name="crea_cartella_locale">Nuova cartella locale</string>
<string name="crea_cartella_remota">Nuova cartella remota</string>
<string name="disconneti">Disconnetti</string>
<string name="default_local_folder">Cartella locale di default</string>
<string name="dove_scaricare">Dove scaricare?</string>
<string name="download">Scarica</string>
<string name="download_completato">Completato il download</string>
<string name="duplicate">Duplica</string>
<string name="fatto">Fatto</string>
<string name="home">Home</string>
<string name="host">Host</string>
<string name="info">Informazioni</string>
<string name="locale">Locale</string>
<string name="log_in">Accesso in corso…</string>
<string name="modifica">Modifica</string>
<string name="muovi">Sposta</string>
<string name="nascondi">Nascondi</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo Editor</string>
<string name="nome_utente">Nome Utente</string>
<string name="passiva">Passiva</string>
<string name="passphrase">Frase segreta</string>
<string name="password">Password</string>
<string name="password_summary">Lasciala vuota per richiederla a ogni sessione</string>
<string name="porta">Porta</string>
<string name="preferenze">Preferenze</string>
<string name="remoto">Remoto</string>
<string name="riavva_per_tema">Per cambiare il tema, riavvia l applicazione</string>
<string name="rinomina">Rinomina</string>
<string name="root">Root</string>
<string name="salva">Salva</string>
<string name="scuro">Scuro</string>
<string name="seleziona">Seleziona</string>
<string name="seleziona_account">Seleziona un account</string>
<string name="sicuro">Sei sicuro?</string>
<string name="something_failed">Qualcosa è fallito</string>
<string name="skip_same_file">Non trasferire lo stesso file</string>
<string name="tema_app">Tema</string>
<string name="tipo_connessione">Tipo di Connessione</string>
<string name="tipo_protocollo">Tipo di Protocollo</string>
<string name="un_altra_cartella">Un altra cartella</string>
<string name="use_passphrase">Usa una frase segreta</string>
<string name="upload">Carica</string>
<string name="upload_completato">Caricamento completato</string>
<string name="what_to_do">Cosa vuoi fare?</string>
<string name="wrap_the_text">Vai a capo</string>
<string name="menu_syntax_highlight">Colora la sinstassi</string>
<string name="testo_indietro">Annulla</string>
<string name="testo_rifai">Rifai</string>
<string name="sync">Sincronizza</string>
<string name="remote_folder_to_sync">Cartella remota da sincronizzare</string>
<string name="local_folder_to_sync">Cartella locale da sincronizzare</string>
<string name="vota">Vota</string>
<string name="inapp_unavailable">Impossibile contattare il Google Play</string>
<string name="inapp_description">E supporta lo sviluppo di nuove funzionalita</string>
<string name="upgrade_premium">Aggiorna a Premium</string>
<string name="upgrade_premium_summary">Aggiorna a Premium e supporta lo sviluppo di Turbo Client!</string>
<string name="download_unlocked_version">Scarica la versione sbloccata</string>
<string name="inapp_second_description">Quanto vale Turbo Client per te? Metti il tuo prezzo! </string>
<string name="inapp_first_description">Aggiorna per sbloccare queste funzionalita:</string>
<string name="inapp_item_openandeditfiles">Abilita di aprire e modificare ogni tipo di file</string>
<string name="inapp_item_backup_service">Servizio di backup per salvare e caricare i tuoi account in modo sicuro. </string>
<string name="inapp_unlock_features">Sblocca le funzioni Premium</string>
<string name="inapp_seconditem_description">Mi piace l\'app!</string>
<string name="inapp_thirditem_description">Amo quest\'app!</string>
<string name="backup_accounts">Fai un backup degli account</string>
<string name="restore_accounts">Ripristina gli account</string>
<string name="share_accounts">Salva e condividi gli account</string>
<string name="importing_accounts">Importando gli account…</string>
<string name="exporting_accounts">Esportando gli account…</string>
<string name="backup_not_found">Nessun backup trovato</string>
<string name="err_cant_open_the_file">Impossibile aprire il file</string>
<string name="err_temp_folder_doesnt_exist">La cartella temporanea non esiste</string>
<string name="err_occured">Si è verificato un errore</string>
<string name="ui_ux">Interfaccia utente</string>
<string name="folder">Cartella</string>
<string name="remove">Rimuovi</string>
<string name="modification_date">Data della modifica</string>
<string name="name">Nome</string>
<string name="size">Peso</string>
<string name="sort">Ordina</string>
<string name="open">Apri</string>
<string name="file_modified">Il file %1$s è stato modificato, vuoi caricarlo?</string>
<string name="file_saved_with_success">Il file %1$s è stato salvato con successo!</string>
<string name="number_of_things_selected">%1$d selezionato</string>
<string name="crea_file_remoto">Nuovo file remoto</string>
<string name="new_local_file">Nuovo file locale</string>
<string name="create_new_account">Crea un nuovo account</string>
<string name="create_new_account_to_start">Creare un nuovo account per iniziare.</string>
<string name="type">Tipo</string>
<string name="send_feedback">Invia Feedback</string>
<string name="copy_url">Copia l\'URL</string>
<string name="cut">Taglia</string>
<string name="paste">Incolla</string>
<string name="advanced">Avanzate</string>
<string name="auto">Automatico</string>
<string name="bytes">Byte</string>
<string name="unit_measurement_for_file_size">Unità di misura per la dimensione del file</string>
<string name="open_source_license">Licenze Open Source</string>
<string name="open_source_license_summary">Visualizza licenze open source</string>
<string name="show_navigation_breadcrumb">Visualizza navigazione breadcrumb</string>
<string name="open_a_file">Apri come file</string>
<string name="open_this_time_only">Apri solo questa volta</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Informazioni</string>
<string name="aboutactivity_app_category">Informazioni applicazione</string>
<string name="aboutactivity_miscellaneous_category">Varie</string>
<string name="aboutactivity_version">Versione %1$s</string>
<string name="aboutactivity_author">Autore</string>
<string name="aboutactivity_authorsite">Sito Web Autore</string>
<string name="aboutactivity_authorsite_summary">Visualizza il sito dell\'autore</string>
<string name="aboutactivity_authoremail">Email Autore</string>
<string name="aboutactivity_authoremail_summary">Manda una mail all\'autore</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Visualizza la pagina twitter</string>
<string name="aboutactivity_authorgoogleplus">Google Plus</string>
<string name="aboutactivity_authorgoogleplus_summary">Visualizza pagina Google Plus</string>
<string name="aboutactivity_betatester">Diventa un beta tester</string>
<string name="aboutactivity_betatester_summary">Diventa una parte della gruppo per ricevere gli aggiornamenti beta</string>
<string name="aboutactivity_helptranslate">Traduci l\'applicazione</string>
<string name="aboutactivity_helptranslate_summary">Correggi alcuni errori o aggiunggi una nuova traduzione</string>
<string name="aboutactivity_readme">Leggimi</string>
<string name="aboutactivity_readme_summary">Leggi la guida</string>
<string name="aboutactivity_faq">Domande frequenti</string>
<string name="aboutactivity_faq_summary">Visualizza le FAQ</string>
<string name="aboutactivity_changelog">ChangeLog</string>
<string name="aboutactivity_changelog_summary">Visualizza i cambiamenti</string>
<string name="aboutactivity_license">Termini di servizio</string>
<string name="aboutactivity_license_summary">Leggi i termini di servizio</string>
<string name="aboutactivity_license_accept">Accetta</string>
<string name="aboutactivity_license_refuse">Rifiuta</string>
<string name="aboutactivity_privacy">Norme sulla privacy</string>
<string name="aboutactivity_privacy_summary">Leggi le norme sulla privacy</string>
<string name="aboutactivity_todo">Da Fare</string>
<string name="aboutactivity_todo_summary">Leggi la lista delle cosa da fare</string>
<string name="aboutactivity_donate">Fai una donazione</string>
<string name="aboutactivity_donate_summary">Grazie per il tuo supporto!</string>
<string name="aboutactivity_market">Android Market</string>
<string name="aboutactivity_market_summary">Visualizza l\'app nel market!</string>
<string name="aboutactivity_authormarket">Market Autore</string>
<string name="aboutactivity_authormarket_summary">Visualizza altre app!</string>
</resources>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">Akaun Baru</string>
<string name="attiva">Aktif</string>
<string name="cancella">Buang</string>
<string name="cancellazione">Menghapus fail...</string>
<string name="caricamento">Memproses...</string>
<string name="cartella_locale_corrente">Folder local sekarang</string>
<string name="chiave_privata">Kata kunci Private</string>
<string name="chiaro">Terang</string>
<string name="codifica">Pengekodan</string>
<string name="condividi">Kongsi</string>
<string name="crea_cartella_locale">New local folder</string>
<string name="crea_cartella_remota">New remote folder</string>
<string name="disconneti">Putuskan sambungan</string>
<string name="default_local_folder">Folder local asal</string>
<string name="dove_scaricare">Muat turun ke?</string>
<string name="download">Muat turun</string>
<string name="download_completato">Muat turun selesai</string>
<string name="duplicate">Fail sudah wujud</string>
<string name="fatto">Selesai</string>
<string name="home">Home</string>
<string name="host">Host</string>
<string name="info">Maklumat</string>
<string name="locale">Local</string>
<string name="log_in">Melog masuk...</string>
<string name="modifica">Edit</string>
<string name="muovi">Alih</string>
<string name="nascondi">Sembunyikan</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo Editor</string>
<string name="nome_utente">Kata Pengguna</string>
<string name="passiva">Pasif</string>
<string name="passphrase">Kata Laluan</string>
<string name="password">Kata Kunci</string>
<string name="password_summary">Biarkan kosong untuk ditanya setiap sesi</string>
<string name="porta">Port</string>
<string name="preferenze">Pilihan</string>
<string name="remoto">Remote</string>
<string name="riavva_per_tema">Untuk mengubah tema, tutup dan buka semula aplikasi</string>
<string name="rinomina">Edit nama</string>
<string name="root">root</string>
<string name="salva">Simpan</string>
<string name="scuro">Gelap</string>
<string name="seleziona">Pilih</string>
<string name="seleziona_account">Pilih akaun</string>
<string name="sicuro">Anda pasti?</string>
<string name="something_failed">Something failed</string>
<string name="skip_same_file">Do not transfer same file</string>
<string name="tema_app">Tema aplikasi</string>
<string name="tipo_connessione">Jenis sambungan</string>
<string name="tipo_protocollo">Jenis protokol</string>
<string name="un_altra_cartella">Folder lain</string>
<string name="use_passphrase">Guna kata laluan</string>
<string name="upload">Muat naik</string>
<string name="upload_completato">Muat naik selesai</string>
<string name="what_to_do">What do you want todo?</string>
<string name="wrap_the_text">Word wrap</string>
<string name="menu_syntax_highlight">Syntax highlight</string>
<string name="testo_indietro">Batal edit</string>
<string name="testo_rifai">Buat semula edit</string>
<string name="sync">Sinkronisasi</string>
<string name="remote_folder_to_sync">Sinkronisasikan folder remote</string>
<string name="local_folder_to_sync">Sinkronisasi folder local</string>
<string name="vota">Undi</string>
<string name="inapp_unavailable">Tidak dapat berhubung dengan Google Play</string>
<string name="inapp_description">Sokong pembinaan ciri-ciri hebat yang lain.</string>
<string name="upgrade_premium">Naik taraf kepada Premium</string>
<string name="upgrade_premium_summary">Menaiktaraf kepada Premium dan sokong perkembangan Turbo Client!</string>
<string name="download_unlocked_version">Download unlocked version</string>
<string name="inapp_second_description">Apakah nilai Turbo Client pada anda? Berikan harga anda! </string>
<string name="inapp_first_description">Naiktaraf untuk mendapat akses kepada ciri-ciri ini:</string>
<string name="inapp_item_openandeditfiles">Membaca dan mengubahsuai apa-apa jenis fail.</string>
<string name="inapp_item_backup_service">Menyimpan dan mengambil semula data anda dengan selamat. </string>
<string name="inapp_unlock_features">Akses ciri-ciri Premium</string>
<string name="inapp_seconditem_description">Saya sangat suka aplikasi ini!</string>
<string name="inapp_thirditem_description">Saya suka aplikasi ini!</string>
<string name="backup_accounts">Backup akaun</string>
<string name="restore_accounts">Kembalikan akaun</string>
<string name="share_accounts">Backup dan kongsi akaun</string>
<string name="importing_accounts">Mengimport akaun…</string>
<string name="exporting_accounts">Mengeksport akaun...</string>
<string name="backup_not_found">No backups found</string>
<string name="err_cant_open_the_file">Tidak dapat membuka fail</string>
<string name="err_temp_folder_doesnt_exist">Temporary folder does not exist</string>
<string name="err_occured">An error occurred</string>
<string name="ui_ux">antara muka pengguna</string>
<string name="folder">Folder</string>
<string name="remove">Hapus</string>
<string name="modification_date">Tarikh pengubahsuaian</string>
<string name="name">Nama</string>
<string name="size">Saiz</string>
<string name="sort">Susun</string>
<string name="open">Buka</string>
<string name="file_modified">Fail %1$s telah berubah. Adakah anda mahu memuat naik?</string>
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
<string name="number_of_things_selected">%1$d selected</string>
<string name="crea_file_remoto">New remote file</string>
<string name="new_local_file">New local file</string>
<string name="create_new_account">Cipta akaun baru</string>
<string name="create_new_account_to_start">Create a new account to start.</string>
<string name="type">Jenis</string>
<string name="send_feedback">Send feedback</string>
<string name="copy_url">Copy URL</string>
<string name="cut">Cut</string>
<string name="paste">paste</string>
<string name="advanced">Advanced</string>
<string name="auto">Auto</string>
<string name="bytes">Bytes</string>
<string name="unit_measurement_for_file_size">Unit of measurement for file size</string>
<string name="open_source_license">Open Source licenses</string>
<string name="open_source_license_summary">Show open source licenses</string>
<string name="show_navigation_breadcrumb">Show navigation breadcrumb</string>
<string name="open_a_file">Open a file</string>
<string name="open_this_time_only">Open this time only</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Maklumat</string>
<string name="aboutactivity_app_category">Maklumat Aplikasi</string>
<string name="aboutactivity_miscellaneous_category">Lain-lain</string>
<string name="aboutactivity_version">Versi %1$s</string>
<string name="aboutactivity_author">Pencipta</string>
<string name="aboutactivity_authorsite">Laman Pencipta</string>
<string name="aboutactivity_authorsite_summary">Buka laman pencipta</string>
<string name="aboutactivity_authoremail">Hubungi pencipta</string>
<string name="aboutactivity_authoremail_summary">Hantar e-mail kepada pencipta</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Buka laman Twitter</string>
<string name="aboutactivity_authorgoogleplus">Google Plus</string>
<string name="aboutactivity_authorgoogleplus_summary">Buka laman Google Plus</string>
<string name="aboutactivity_betatester">Menjadi penguji versi beta</string>
<string name="aboutactivity_betatester_summary">Jadi sebahagian daripada komuniti untuk menerima versi beta terkini</string>
<string name="aboutactivity_helptranslate">Menterjemahkan aplikasi</string>
<string name="aboutactivity_helptranslate_summary">Membetulkan kesalahan atau menambah terjemahan baru</string>
<string name="aboutactivity_readme">Read Me</string>
<string name="aboutactivity_readme_summary">Baca rujukan</string>
<string name="aboutactivity_faq">FAQ</string>
<string name="aboutactivity_faq_summary">Tunjukkan FAQ aplikasi</string>
<string name="aboutactivity_changelog">ChangeLog</string>
<string name="aboutactivity_changelog_summary">Tunjukkan changelog aplikasi</string>
<string name="aboutactivity_license">Syarat-syarat Penggunaan</string>
<string name="aboutactivity_license_summary">Baca syarat-syarat Penggunaan</string>
<string name="aboutactivity_license_accept">Terima</string>
<string name="aboutactivity_license_refuse">Menolak</string>
<string name="aboutactivity_privacy">Dasar privasi</string>
<string name="aboutactivity_privacy_summary">Baca dasar privasi</string>
<string name="aboutactivity_todo">Senarai cadangan penambahbaikan</string>
<string name="aboutactivity_todo_summary">Baca cadangan penambahbaikan</string>
<string name="aboutactivity_donate">Beri sumbangan</string>
<string name="aboutactivity_donate_summary">Terima kasih kerana menyokong saya!</string>
<string name="aboutactivity_market">Play Store</string>
<string name="aboutactivity_market_summary">Hantar maklum balas dan menilai aplikasi!</string>
<string name="aboutactivity_authormarket">Lebih banyak berkenaan pencipta</string>
<string name="aboutactivity_authormarket_summary">Tunjukkan semua aplikasi pencipta!</string>
</resources>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">Nieuwe account</string>
<string name="attiva">Actief</string>
<string name="cancella">Verwijderen</string>
<string name="cancellazione">Bestanden verwijderen…</string>
<string name="caricamento">Laden…</string>
<string name="cartella_locale_corrente">Huidige lokale map</string>
<string name="chiave_privata">Privesleutel</string>
<string name="chiaro">Licht</string>
<string name="codifica">Codering</string>
<string name="condividi">Delen</string>
<string name="crea_cartella_locale">Nieuwe lokale map</string>
<string name="crea_cartella_remota">Nieuwe externe map</string>
<string name="disconneti">Loskoppelen</string>
<string name="default_local_folder">Standaard lokale map</string>
<string name="dove_scaricare">Waar wilt u dit bestand opslaan?</string>
<string name="download">Downloaden</string>
<string name="download_completato">Download voltooid</string>
<string name="duplicate">Dupliceer</string>
<string name="fatto">Klaar</string>
<string name="home">Home</string>
<string name="host">Host</string>
<string name="info">Info</string>
<string name="locale">Lokaal</string>
<string name="log_in">Inloggen…</string>
<string name="modifica">Bewerken</string>
<string name="muovi">Verplaatsen</string>
<string name="nascondi">Verberg</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo Editor</string>
<string name="nome_utente">Gebruikersnaam</string>
<string name="passiva">Passief</string>
<string name="passphrase">Wachtwoord</string>
<string name="password">Wachtwoord</string>
<string name="password_summary">Leeg laten om bij elke sessie te vragen</string>
<string name="porta">Poort</string>
<string name="preferenze">Voorkeuren</string>
<string name="remoto">Extern</string>
<string name="riavva_per_tema">Start de applicatie opnieuw om het thema van kracht te laten worden</string>
<string name="rinomina">Hernoemen</string>
<string name="root">Root</string>
<string name="salva">Opslaan</string>
<string name="scuro">Donker</string>
<string name="seleziona">Selecteren</string>
<string name="seleziona_account">Selecteer een account</string>
<string name="sicuro">Weet je dit zeker?</string>
<string name="something_failed">Er is een fout opgetreden</string>
<string name="skip_same_file">Sla hetzelfde bestand over</string>
<string name="tema_app">Applicatiethema</string>
<string name="tipo_connessione">Verbindingstype</string>
<string name="tipo_protocollo">Protocoltype</string>
<string name="un_altra_cartella">Andere map</string>
<string name="use_passphrase">Gebruik een wachtwoord</string>
<string name="upload">Uploaden</string>
<string name="upload_completato">Uploaden voltooid</string>
<string name="what_to_do">Wat wil je doen?</string>
<string name="wrap_the_text">Comprimeer de tekst</string>
<string name="menu_syntax_highlight">Gekleurde code</string>
<string name="testo_indietro">Ongedaan maken</string>
<string name="testo_rifai">Opnieuw uitvoeren</string>
<string name="sync">Synchroniseer</string>
<string name="remote_folder_to_sync">Map op afstand om te synchroniseren</string>
<string name="local_folder_to_sync">Lokale map om te synchroniseren</string>
<string name="vota">Beoordelen</string>
<string name="inapp_unavailable">Kan Google Play niet bereiken</string>
<string name="inapp_description">Ondersteun de ontwikkeling van andere geweldige features.</string>
<string name="upgrade_premium">Upgrade naar Premium</string>
<string name="upgrade_premium_summary">Upgrade naar Premium versie en ondersteun de ontwikkeling van Turbo Client!</string>
<string name="download_unlocked_version">Download de premium versie</string>
<string name="inapp_second_description">Wat is Turbo Client waard volgens jou? Bepaal jouw prijs! </string>
<string name="inapp_first_description">Upgrade om deze feature te ontsleutelen:</string>
<string name="inapp_item_openandeditfiles">De mogelijkheid om elk type bestand te openen of aan te passen.</string>
<string name="inapp_item_backup_service">Backup functionaliteit om je data veilig te backuppen en te herstellen. </string>
<string name="inapp_unlock_features">Ontgrendel de betaalde functies</string>
<string name="inapp_seconditem_description">I vind het echt een leuke app!</string>
<string name="inapp_thirditem_description">I hou van deze app!</string>
<string name="backup_accounts">Accounts backuppen</string>
<string name="restore_accounts">Accounts herstellen</string>
<string name="share_accounts">Accounts backuppen en delen</string>
<string name="importing_accounts">Accounts importeren…</string>
<string name="exporting_accounts">Accounts exporteren...</string>
<string name="backup_not_found">Geen back-ups gevonden</string>
<string name="err_cant_open_the_file">Kan het bestand niet openen</string>
<string name="err_temp_folder_doesnt_exist">Tijdelijke map bestaat niet</string>
<string name="err_occured">Er is een fout opgetreden</string>
<string name="ui_ux">UI</string>
<string name="folder">Map</string>
<string name="remove">Verwijder</string>
<string name="modification_date">Verander datum</string>
<string name="name">Naam</string>
<string name="size">Grote</string>
<string name="sort">Soort</string>
<string name="open">Openen</string>
<string name="file_modified">Het bestand %1$s is aangepast, wilt u het uploaden?</string>
<string name="file_saved_with_success">Het bestand %1$s is met succes opgeslagen!</string>
<string name="number_of_things_selected">%1$d geselecteerd</string>
<string name="crea_file_remoto">Nieuw extern bestand</string>
<string name="new_local_file">Nieuw lokaal bestand</string>
<string name="create_new_account">Nieuwe account toevoegen</string>
<string name="create_new_account_to_start">Maak een account aan om te beginnen.</string>
<string name="type">Type</string>
<string name="send_feedback">Commentaar verzenden</string>
<string name="copy_url">URL kopiëren</string>
<string name="cut">Knippen</string>
<string name="paste">plakken</string>
<string name="advanced">Geavanceerd</string>
<string name="auto">Auto</string>
<string name="bytes">Bytes</string>
<string name="unit_measurement_for_file_size">Maateenheid voor bestandsgrootte</string>
<string name="open_source_license">Open Source-licenties</string>
<string name="open_source_license_summary">Toon open source-licenties</string>
<string name="show_navigation_breadcrumb">Toon navigatie breadcrumb</string>
<string name="open_a_file">Open een bestand</string>
<string name="open_this_time_only">Alleen deze keer openen</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Info</string>
<string name="aboutactivity_app_category">Applicatie informatie</string>
<string name="aboutactivity_miscellaneous_category">Diversen</string>
<string name="aboutactivity_version">Versie %1$s</string>
<string name="aboutactivity_author">Auteur</string>
<string name="aboutactivity_authorsite">Website auteur</string>
<string name="aboutactivity_authorsite_summary">Toon de website van de auteur</string>
<string name="aboutactivity_authoremail">E-mailadres auteur</string>
<string name="aboutactivity_authoremail_summary">Stuur een e-mail naar de auteur</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Toon de Twitter pagina</string>
<string name="aboutactivity_authorgoogleplus">Google+</string>
<string name="aboutactivity_authorgoogleplus_summary">Toon de Google+ pagina</string>
<string name="aboutactivity_betatester">Een betatester worden</string>
<string name="aboutactivity_betatester_summary">Word lid van de community om beta updates te ontvangen</string>
<string name="aboutactivity_helptranslate">Vertaal de applicatie</string>
<string name="aboutactivity_helptranslate_summary">Verbeter de vertalingen of voeg nieuwe onderdelen toe</string>
<string name="aboutactivity_readme">Lees mij</string>
<string name="aboutactivity_readme_summary">Lees meer over de app</string>
<string name="aboutactivity_faq">Veelgestelde vragen</string>
<string name="aboutactivity_faq_summary">Toon de veelgestelde vragen</string>
<string name="aboutactivity_changelog">Aanpassingslogboek</string>
<string name="aboutactivity_changelog_summary">Toon het logboek</string>
<string name="aboutactivity_license">Algemene gebruikersvoorwaarden</string>
<string name="aboutactivity_license_summary">Lees de algemene gebruiksvoorwaarden</string>
<string name="aboutactivity_license_accept">Accepteren</string>
<string name="aboutactivity_license_refuse">Weigeren</string>
<string name="aboutactivity_privacy">Privacybeleid</string>
<string name="aboutactivity_privacy_summary">Lees het privacybeleid</string>
<string name="aboutactivity_todo">TODO lijst</string>
<string name="aboutactivity_todo_summary">Lees de todolijst</string>
<string name="aboutactivity_donate">Maak een donatie</string>
<string name="aboutactivity_donate_summary">Bedankt voor uw ondersteuning!</string>
<string name="aboutactivity_market">Play Store</string>
<string name="aboutactivity_market_summary">Geef je reactie en een waardering!</string>
<string name="aboutactivity_authormarket">Meer applicaties</string>
<string name="aboutactivity_authormarket_summary">Toon alle apps van dezelfde ontwikkelaar!</string>
</resources>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">Nowe konto</string>
<string name="attiva">Aktywny</string>
<string name="cancella">Usuń</string>
<string name="cancellazione">Usuwanie plików…</string>
<string name="caricamento">Ładuje…</string>
<string name="cartella_locale_corrente">Obecny folder lokalny</string>
<string name="chiave_privata">Klucz prywatny</string>
<string name="chiaro">Jasny</string>
<string name="codifica">Kodowanie</string>
<string name="condividi">Udostępnij</string>
<string name="crea_cartella_locale">Nowy folder lokalny</string>
<string name="crea_cartella_remota">Nowy folder zdalny</string>
<string name="disconneti">Rozłącz</string>
<string name="default_local_folder">Domyślny folder lokalny</string>
<string name="dove_scaricare">Gdzie pobrać?</string>
<string name="download">Ściągnij</string>
<string name="download_completato">Pobieranie zakończone</string>
<string name="duplicate">Duplikuj</string>
<string name="fatto">Zrobione</string>
<string name="home">Folder domowy</string>
<string name="host">Host</string>
<string name="info">Informacje</string>
<string name="locale">Lokalny</string>
<string name="log_in">Loguje się…</string>
<string name="modifica">Edytuj</string>
<string name="muovi">Przenieś</string>
<string name="nascondi">Ukryj</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo Edytor</string>
<string name="nome_utente">Użytkownik</string>
<string name="passiva">Pasywny</string>
<string name="passphrase">Hasło</string>
<string name="password">Hasło</string>
<string name="password_summary">Pozostaw puste, aby pytać o nie podczas każdej sesji</string>
<string name="porta">Port</string>
<string name="preferenze">Ustawienia</string>
<string name="remoto">Zdalny</string>
<string name="riavva_per_tema">Aby zmienić motyw, uruchom ponownie aplikację</string>
<string name="rinomina">Zmień nazwę</string>
<string name="root">Root</string>
<string name="salva">Zapisz</string>
<string name="scuro">Ciemny</string>
<string name="seleziona">Wybierz</string>
<string name="seleziona_account">Wybierz konto</string>
<string name="sicuro">Jesteś pewny?</string>
<string name="something_failed">Coś nie powiodło się</string>
<string name="skip_same_file">Nie transferuj tego samego pliku</string>
<string name="tema_app">Wygląd aplikacji</string>
<string name="tipo_connessione">Typ połączenia</string>
<string name="tipo_protocollo">Typ protokołu</string>
<string name="un_altra_cartella">Inny folder</string>
<string name="use_passphrase">Użyj hasła</string>
<string name="upload">Prześlij</string>
<string name="upload_completato">Przesyłanie zakończone</string>
<string name="what_to_do">Co chcesz zrobić?</string>
<string name="wrap_the_text">Zawijanie wyrazów</string>
<string name="menu_syntax_highlight">Syntax highlight</string>
<string name="testo_indietro">Cofnij</string>
<string name="testo_rifai">Powtórz</string>
<string name="sync">Synchronizuj</string>
<string name="remote_folder_to_sync">Synchronij folder zdalny</string>
<string name="local_folder_to_sync">Synchronizuj folder lokalny</string>
<string name="vota">Oceń</string>
<string name="inapp_unavailable">Nie można połączyć się z Google Play</string>
<string name="inapp_description">Support the development of other great features.</string>
<string name="upgrade_premium">Zaktualizuj do wersji Premium</string>
<string name="upgrade_premium_summary">Zaktualizuj do wersji Premium i wspieraj rozwój klienta Turbo!</string>
<string name="download_unlocked_version">Pobierz odblokowaną wersję</string>
<string name="inapp_second_description">Jak oceniasz Turbo Client\'a? Wystaw ocenę! </string>
<string name="inapp_first_description">Zaktualizuj, aby odblokować te funkcje:</string>
<string name="inapp_item_openandeditfiles">Uprawnienia do otwierania i modyfikowania dowolnego typu pliku.</string>
<string name="inapp_item_backup_service">Backup service to backup and restore your data safely. </string>
<string name="inapp_unlock_features">Odblokuj funkcje Premium</string>
<string name="inapp_seconditem_description">Bardzo podoba mi się ta aplikacja!</string>
<string name="inapp_thirditem_description">Kocham tę aplikację!</string>
<string name="backup_accounts">Kopia zapasowa kont</string>
<string name="restore_accounts">Przywracanie kont</string>
<string name="share_accounts">Kopia zapasowa i udostępnianie kont</string>
<string name="importing_accounts">Importowanie kont...</string>
<string name="exporting_accounts">Eksportowanie kont...</string>
<string name="backup_not_found">Nie znaleziono kopii zapasowych</string>
<string name="err_cant_open_the_file">Nie można otworzyć pliku</string>
<string name="err_temp_folder_doesnt_exist">Tymczasowy folder nie istnieje</string>
<string name="err_occured">Wystąpił błąd</string>
<string name="ui_ux">Interfejs użytkownika</string>
<string name="folder">Folder</string>
<string name="remove">Usuń</string>
<string name="modification_date">Data modyfikacji</string>
<string name="name">Nazwa</string>
<string name="size">Rozmiar</string>
<string name="sort">Sortuj</string>
<string name="open">Otwórz</string>
<string name="file_modified">The file %1$s was modified, do you want to upload it?</string>
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
<string name="number_of_things_selected">%1$d selected</string>
<string name="crea_file_remoto">Nowy plik zdalny</string>
<string name="new_local_file">Nowy plik lokalny</string>
<string name="create_new_account">Utwórz nowe konto</string>
<string name="create_new_account_to_start">Utwórz nowe konto, aby rozpocząć.</string>
<string name="type">Typ</string>
<string name="send_feedback">Prześlij sugestię</string>
<string name="copy_url">Kopiuj adres URL</string>
<string name="cut">wytnij</string>
<string name="paste">wklej</string>
<string name="advanced">Zaawansowane</string>
<string name="auto">Automatyczna</string>
<string name="bytes">Bajty</string>
<string name="unit_measurement_for_file_size">Jednostka miary dla rozmiaru pliku</string>
<string name="open_source_license">Licencje Open Source</string>
<string name="open_source_license_summary">Pokaż licencje open source</string>
<string name="show_navigation_breadcrumb">Show navigation breadcrumb</string>
<string name="open_a_file">Otwórz plik</string>
<string name="open_this_time_only">Open this time only</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Informacje</string>
<string name="aboutactivity_app_category">Informacje o aplikacji</string>
<string name="aboutactivity_miscellaneous_category">Różne</string>
<string name="aboutactivity_version">Wersja %1$ s</string>
<string name="aboutactivity_author">Autor</string>
<string name="aboutactivity_authorsite">Strona autora</string>
<string name="aboutactivity_authorsite_summary">Pokaż stronę autora</string>
<string name="aboutactivity_authoremail">Adres mail\'owy autora</string>
<string name="aboutactivity_authoremail_summary">Wyślij e-mail do autora</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Pokaż stronę na twitter\'ze</string>
<string name="aboutactivity_authorgoogleplus">Google Plus</string>
<string name="aboutactivity_authorgoogleplus_summary">Pokaż stronę na Google Plus</string>
<string name="aboutactivity_betatester">Zostań beta testerem</string>
<string name="aboutactivity_betatester_summary">Zostań częścią społeczności, aby otrzymywać aktualizacje beta</string>
<string name="aboutactivity_helptranslate">Tłumaczenie aplikacji</string>
<string name="aboutactivity_helptranslate_summary">Popraw pewne błędy lub dodaj nowe tłumaczenie</string>
<string name="aboutactivity_readme">Read Me</string>
<string name="aboutactivity_readme_summary">Read the reference</string>
<string name="aboutactivity_faq">FAQ</string>
<string name="aboutactivity_faq_summary">Pokaż FAQ aplikacji</string>
<string name="aboutactivity_changelog">Lista zmian</string>
<string name="aboutactivity_changelog_summary">Pokaż listę zmian aplikacji</string>
<string name="aboutactivity_license">Regulamin</string>
<string name="aboutactivity_license_summary">Przeczytaj regulamin</string>
<string name="aboutactivity_license_accept">Akceptuj</string>
<string name="aboutactivity_license_refuse">Odmów</string>
<string name="aboutactivity_privacy">Polityka prywatności</string>
<string name="aboutactivity_privacy_summary">Przeczytaj o polityce prywatności</string>
<string name="aboutactivity_todo">Lista rzeczy do zrobienia</string>
<string name="aboutactivity_todo_summary">Przeczytaj listy rzeczy do zrobienia</string>
<string name="aboutactivity_donate">Przekaż darowiznę</string>
<string name="aboutactivity_donate_summary">Dziękuję za wspieranie mnie!</string>
<string name="aboutactivity_market">Sklep Play</string>
<string name="aboutactivity_market_summary">Wyślij opinię i Oceń go!</string>
<string name="aboutactivity_authormarket">Sklep autora</string>
<string name="aboutactivity_authormarket_summary">Pokaż inne aplikcje autora!</string>
</resources>

View File

@ -0,0 +1,23 @@
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<!-- Customize dimensions originally defined in res/values/dimens.xml (such as
screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
</resources>

View File

@ -0,0 +1,24 @@
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<!-- Customize dimensions originally defined in res/values/dimens.xml (such as
screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here. -->
<dimen name="activity_horizontal_margin">128dp</dimen>
</resources>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<!-- action bar background color -->
<color name="actionbar_background">#111111</color>
<!-- activity background color -->
<color name="activity_background">#202020</color>
<!-- activity text color -->
<color name="activity_text_color">#fff7f7f9</color>
<!-- navigation drawer background color -->
<color name="navigation_drawer_background">#1d1d1d</color>
<!-- colors used as file icons -->
<color name="file_folder">#ffbb33</color>
<color name="file_code">#00a569</color>
<color name="file_html">#00a569</color>
<color name="file_text">#717171</color>
<color name="file_archive">#aa66cc</color>
<color name="file_media_music">#ff4444</color>
<color name="file_media_picture">#33b5e5</color>
<color name="file_media_video">#ff00607d</color>
</resources>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="navigation_drawer_width">300dp</dimen>
<dimen name="dialog_edittext_margin">10dp</dimen>
<dimen name="dialog_button_padding">10dp</dimen>
<dimen name="line_dimension">1dp</dimen>
<dimen name="item_drawer_list_padding">16dp</dimen>
<dimen name="item_drawer_list_height">64dp</dimen>
<dimen name="icon_dimension">50dp</dimen>
<dimen name="icon_padding">10dp</dimen>
<dimen name="item_file_list_height">56dp</dimen>
<dimen name="minimum_padding">2dp</dimen>
<dimen name="text_size_mega_title">25sp</dimen>
<dimen name="text_size_title">16sp</dimen>
<dimen name="text_size_subtitle">14sp</dimen>
<dimen name="text_size_editor">16sp</dimen>
</resources>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<!-- menu item ids -->
<item type="id" name="im_undo"/>
<item type="id" name="im_redo"/>
<item type="id" name="im_editor"/>
<item type="id" name="im_remove"/>
<item type="id" name="im_open"/>
<item type="id" name="im_info"/>
<item type="id" name="im_button"/>
<item type="id" name="im_save"/>
<item type="id" name="im_editor_encoding"/>
<item type="id" name="im_wrap_text"/>
<item type="id" name="im_syntax_highlight"/>
<!-- layout item ids -->
<item type="id" name="drawer_layout"/>
<item type="id" name="fragment_editor"/>
<item type="id" name="drawer_list"/>
<item type="id" name="editor"/>
</resources>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<integer name="editor_max_file_size">4194304</integer>
</resources>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aggiungi_account">New account</string>
<string name="attiva">Active</string>
<string name="cancella">Delete</string>
<string name="cancellazione">Deleting files…</string>
<string name="caricamento">Loading…</string>
<string name="cartella_locale_corrente">Current local folder</string>
<string name="chiave_privata">Private Key</string>
<string name="chiaro">Light</string>
<string name="codifica">Encoding</string>
<string name="condividi">Share</string>
<string name="crea_cartella_locale">New local folder</string>
<string name="crea_cartella_remota">New remote folder</string>
<string name="disconneti">Disconnect</string>
<string name="default_local_folder">Default local folder</string>
<string name="dove_scaricare">Where to download?</string>
<string name="download">Download</string>
<string name="download_completato">Download completed</string>
<string name="duplicate">Duplicate</string>
<string name="fatto">Done</string>
<string name="home">Home</string>
<string name="host">Host</string>
<string name="info">Info</string>
<string name="locale">Local</string>
<string name="log_in">Logging in…</string>
<string name="modifica">Edit</string>
<string name="muovi">Move</string>
<string name="nascondi">Hide</string>
<string name="nome_app">Turbo Client</string>
<string name="nome_app_turbo_editor">Turbo Editor</string>
<string name="nome_utente">Username</string>
<string name="passiva">Passive</string>
<string name="passphrase">Passphrase</string>
<string name="password">Password</string>
<string name="password_summary">Leave it empty to prompt for it every session</string>
<string name="porta">Port</string>
<string name="preferenze">Preferences</string>
<string name="remoto">Remote</string>
<string name="riavva_per_tema">To change the theme, restart the application</string>
<string name="rinomina">Rename</string>
<string name="root">Default remote folder</string>
<string name="salva">Save</string>
<string name="scuro">Dark</string>
<string name="seleziona">Select</string>
<string name="seleziona_account">Select an account</string>
<string name="sicuro">Are you sure?</string>
<string name="something_failed">Something failed</string>
<string name="skip_same_file">Do not transfer same file</string>
<string name="tema_app">App theme</string>
<string name="tipo_connessione">Connection type</string>
<string name="tipo_protocollo">Protocol type</string>
<string name="un_altra_cartella">Another folder</string>
<string name="use_passphrase">Use a passphrase</string>
<string name="upload">Upload</string>
<string name="upload_completato">Upload completed</string>
<string name="what_to_do">What do you want todo?</string>
<string name="wrap_the_text">Word wrap</string>
<string name="menu_syntax_highlight">Syntax highlight</string>
<string name="testo_indietro">Undo</string>
<string name="testo_rifai">Redo</string>
<string name="sync">Sync</string>
<string name="remote_folder_to_sync">Remote folder to sync</string>
<string name="local_folder_to_sync">Local folder to sync</string>
<string name="vota">Rate</string>
<string name="inapp_unavailable">Cannot contact Google Play</string>
<string name="inapp_description">Support the development of other great features.</string>
<string name="upgrade_premium">Upgrade to Premium</string>
<string name="upgrade_premium_summary">Upgrade to Premium and support the development of Turbo Client!</string>
<string name="download_unlocked_version">Download unlocked version</string>
<string name="inapp_second_description">What is Turbo Client worth to you? Set your price! </string>
<string name="inapp_first_description">Upgrade to unlock this features:</string>
<string name="inapp_item_openandeditfiles">Power to open and modify any type of file.</string>
<string name="inapp_item_backup_service">Backup service to backup and restore your data safely. </string>
<string name="inapp_unlock_features">Unlock the Premium features</string>
<string name="inapp_seconditem_description">I really like this app!</string>
<string name="inapp_thirditem_description">I love this app!</string>
<string name="backup_accounts">Backup the accounts</string>
<string name="restore_accounts">Restore the accounts</string>
<string name="share_accounts">Backup and share the accounts</string>
<string name="importing_accounts">Importing the accounts…</string>
<string name="exporting_accounts">Exporting the accounts...</string>
<string name="backup_not_found">No backups found</string>
<string name="err_cant_open_the_file">Cannot open the file</string>
<string name="err_temp_folder_doesnt_exist">Temporary folder does not exist</string>
<string name="err_occured">An error occurred</string>
<string name="ui_ux">Ui</string>
<string name="folder">Folder</string>
<string name="remove">Remove</string>
<string name="modification_date">Modification date</string>
<string name="name">Name</string>
<string name="size">Size</string>
<string name="sort">Sort</string>
<string name="open">Open</string>
<string name="file_modified">The file %1$s was modified, do you want to upload it?</string>
<string name="file_saved_with_success">The file %1$s was saved with success!</string>
<string name="number_of_things_selected">%1$d selected</string>
<string name="crea_file_remoto">New remote file</string>
<string name="new_local_file">New local file</string>
<string name="create_new_account">Create a new account</string>
<string name="create_new_account_to_start">Create a new account to start.</string>
<string name="type">Type</string>
<string name="send_feedback">Send feedback</string>
<string name="copy_url">Copy URL</string>
<string name="cut">Cut</string>
<string name="paste">paste</string>
<string name="advanced">Advanced</string>
<string name="auto">Auto</string>
<string name="bytes">Bytes</string>
<string name="unit_measurement_for_file_size">Unit of measurement for file size</string>
<string name="open_source_license">Open Source licenses</string>
<string name="open_source_license_summary">Show open source licenses</string>
<string name="show_navigation_breadcrumb">Show navigation breadcrumb</string>
<string name="open_a_file">Open a file</string>
<string name="open_this_time_only">Open this time only</string>
</resources>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.net-->
<resources>
<string name="aboutactivity_info_category">Info</string>
<string name="aboutactivity_app_category">Application Info</string>
<string name="aboutactivity_miscellaneous_category">Miscellaneous</string>
<string name="aboutactivity_version">Version %1$s</string>
<string name="aboutactivity_author">Author</string>
<string name="aboutactivity_authorsite">Author site</string>
<string name="aboutactivity_authorsite_summary">Show author site</string>
<string name="aboutactivity_authoremail">Author mail</string>
<string name="aboutactivity_authoremail_summary">Send mail to author</string>
<string name="aboutactivity_authortwitter">Twitter</string>
<string name="aboutactivity_authortwitter_summary">Show twitter page</string>
<string name="aboutactivity_authorgoogleplus">Google Plus</string>
<string name="aboutactivity_authorgoogleplus_summary">Show Google Plus page</string>
<string name="aboutactivity_betatester">Become a beta tester</string>
<string name="aboutactivity_betatester_summary">Be a part of the community to receive beta updates</string>
<string name="aboutactivity_helptranslate">Translate the Application</string>
<string name="aboutactivity_helptranslate_summary">Correct some mistakes or add a new translation</string>
<string name="aboutactivity_readme">Read Me</string>
<string name="aboutactivity_readme_summary">Read the reference</string>
<string name="aboutactivity_faq">FAQ</string>
<string name="aboutactivity_faq_summary">Show app faq</string>
<string name="aboutactivity_changelog">ChangeLog</string>
<string name="aboutactivity_changelog_summary">Show app changelog</string>
<string name="aboutactivity_license">Terms of service</string>
<string name="aboutactivity_license_summary">Read the Terms of service</string>
<string name="aboutactivity_license_accept">Accept</string>
<string name="aboutactivity_license_refuse">Refuse</string>
<string name="aboutactivity_privacy">Privacy policy</string>
<string name="aboutactivity_privacy_summary">Read the Privacy policy</string>
<string name="aboutactivity_todo">ToDo List</string>
<string name="aboutactivity_todo_summary">Read the todo list</string>
<string name="aboutactivity_donate">Make a donation</string>
<string name="aboutactivity_donate_summary">Thank you for supporting me!</string>
<string name="aboutactivity_market">Play Store</string>
<string name="aboutactivity_market_summary">Send feedback and rate it!</string>
<string name="aboutactivity_authormarket">Author Store</string>
<string name="aboutactivity_authormarket_summary">Show author applications!</string>
</resources>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
<style name="AppStyle"
parent="android:Theme.Holo">
<item name="android:windowBackground">@color/activity_background</item>
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="android:textColor">@color/activity_text_color</item>
</style>
<style name="ActionBarStyle"
parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/actionbar_background</item>
<item name="android:backgroundStacked">@color/actionbar_background</item>
<item name="android:backgroundSplit">@color/actionbar_background</item>
<item name="android:titleTextStyle">@style/ActionBarStyle.Title.Inverse</item>
<item name="android:subtitleTextStyle">@style/ActionBarStyle.Subtitle</item>
</style>
<style name="ActionBarStyle.Title.Inverse"
parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@android:color/primary_text_dark_nodisable</item>
</style>
<style name="ActionBarStyle.Subtitle"
parent="android:TextAppearance.Holo.Widget.ActionBar.Subtitle">
<item name="android:textColor">@android:color/primary_text_dark_nodisable</item>
</style>
</resources>

View File

@ -0,0 +1,100 @@
<!--
~ Copyright (C) 2013 Vlad Mihalachi
~
~ This file is part of Turbo Editor.
~
~ Turbo Editor 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 3 of the License, or
~ (at your option) any later version.
~
~ Turbo Editor 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 Turbo Editor. If not, see <http://www.gnu.org/licenses/>.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/aboutactivity_info_category">
<Preference
android:key="aboutactivity_author"
android:title="@string/aboutactivity_author"
android:summary="Vlad Mihalachi" />
<Preference
android:key="aboutactivity_authorsite"
android:title="@string/aboutactivity_authorsite"
android:summary="@string/aboutactivity_authorsite_summary">
<intent
android:action="android.intent.action.VIEW"
android:data="http://vmihalachi.com" />
</Preference>
<Preference
android:key="aboutactivity_authoremail"
android:title="@string/aboutactivity_authoremail"
android:summary="@string/aboutactivity_authoremail_summary" />
<Preference
android:key="aboutactivity_authorgoogleplus"
android:title="@string/aboutactivity_authorgoogleplus"
android:summary="@string/aboutactivity_authorgoogleplus_summary">
<intent
android:action="android.intent.action.VIEW"
android:data="https://plus.google.com/u/0/116753921964371818338" />
</Preference>
<Preference
android:key="aboutactivity_authortwitter"
android:title="@string/aboutactivity_authortwitter"
android:summary="@string/aboutactivity_authortwitter_summary">
<intent
android:action="android.intent.action.VIEW"
android:data="https://twitter.com/vmihalachi" />
</Preference>
</PreferenceCategory>
<PreferenceCategory android:title="@string/aboutactivity_app_category">
<Preference
android:key="aboutactivity_betatester"
android:title="@string/aboutactivity_betatester"
android:summary="@string/aboutactivity_betatester_summary">
<intent
android:action="android.intent.action.VIEW"
android:data="https://plus.google.com/u/0/communities/111974095419108178946" />
</Preference>
<Preference
android:key="aboutactivity_helptranslate"
android:title="@string/aboutactivity_helptranslate"
android:summary="@string/aboutactivity_helptranslate_summary">
<intent
android:action="android.intent.action.VIEW"
android:data="http://crowdin.net/project/turbo-client" />
</Preference>
<Preference
android:key="aboutactivity_changelog"
android:title="@string/aboutactivity_changelog"
android:summary="@string/aboutactivity_changelog_summary" />
<Preference
android:key="aboutactivity_faq"
android:title="@string/aboutactivity_faq"
android:summary="@string/aboutactivity_faq_summary">
<intent
android:action="android.intent.action.VIEW"
android:data="https://github.com/vmihalachi/TurboEditor/wiki/Faq" />
</Preference>
<Preference
android:key="aboutactivity_open_source_licenses"
android:title="@string/open_source_license"
android:summary="@string/open_source_license_summary" />
<Preference
android:key="aboutactivity_authormarket"
android:title="@string/aboutactivity_authormarket"
android:summary="@string/aboutactivity_authormarket_summary" />
</PreferenceCategory>
</PreferenceScreen>

1
build.gradle Normal file
View File

@ -0,0 +1 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,6 @@
#Thu Sep 26 13:46:28 CEST 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.7-bin.zip

164
gradlew vendored Normal file
View File

@ -0,0 +1,164 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

90
gradlew.bat vendored Normal file
View File

@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

1
settings.gradle Normal file
View File

@ -0,0 +1 @@
include ':Turbo Editor'