Merge branch 'master' of https://github.com/calamares/calamares into development
This commit is contained in:
commit
25db582a0a
@ -1,34 +1,32 @@
|
||||
---
|
||||
---
|
||||
BasedOnStyle: WebKit
|
||||
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignEscapedNewlines: Left
|
||||
AllowAllParametersOfDeclarationOnNextLine: 'false'
|
||||
AlignEscapedNewlines: DontAlign
|
||||
AllowAllParametersOfDeclarationOnNextLine: "false"
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: 'false'
|
||||
AllowShortLoopsOnASingleLine: 'false'
|
||||
AllowShortIfStatementsOnASingleLine: "false"
|
||||
AllowShortLoopsOnASingleLine: "false"
|
||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BinPackArguments: 'false'
|
||||
BinPackParameters: 'false'
|
||||
BinPackArguments: "false"
|
||||
BinPackParameters: "false"
|
||||
BreakBeforeBraces: Allman
|
||||
BreakBeforeTernaryOperators: 'true'
|
||||
BreakBeforeTernaryOperators: "true"
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
ColumnLimit: 120
|
||||
Cpp11BracedListStyle: 'false'
|
||||
FixNamespaceComments: 'true'
|
||||
Cpp11BracedListStyle: "false"
|
||||
FixNamespaceComments: "true"
|
||||
IncludeBlocks: Preserve
|
||||
IndentWidth: '4'
|
||||
MaxEmptyLinesToKeep: '2'
|
||||
IndentWidth: "4"
|
||||
MaxEmptyLinesToKeep: "2"
|
||||
NamespaceIndentation: None
|
||||
PointerAlignment: Left
|
||||
ReflowComments: 'false'
|
||||
SortIncludes: 'true'
|
||||
SpaceAfterCStyleCast: 'false'
|
||||
SpacesBeforeTrailingComments: '2'
|
||||
SpacesInAngles: 'true'
|
||||
SpacesInParentheses: 'true'
|
||||
SpacesInSquareBrackets: 'true'
|
||||
ReflowComments: "false"
|
||||
SortIncludes: "true"
|
||||
SpaceAfterCStyleCast: "false"
|
||||
SpacesBeforeTrailingComments: "2"
|
||||
SpacesInAngles: "true"
|
||||
SpacesInParentheses: "true"
|
||||
SpacesInSquareBrackets: "true"
|
||||
Standard: Cpp11
|
||||
|
||||
...
|
||||
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#include "kdlockedsharedmemorypointer.h"
|
||||
|
||||
#if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN )
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#ifndef __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__
|
||||
#define __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__
|
||||
|
||||
@ -74,7 +80,7 @@ public:
|
||||
typedef const T* const_iterator;
|
||||
typedef std::reverse_iterator< const_iterator > const_reverse_iterator;
|
||||
typedef std::reverse_iterator< iterator > reverse_iterator;
|
||||
|
||||
|
||||
iterator begin() { return get(); }
|
||||
const_iterator begin() const { return get(); }
|
||||
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#include "kdsharedmemorylocker.h"
|
||||
|
||||
#if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN )
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#ifndef __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H
|
||||
#define __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H
|
||||
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#include "kdsingleapplicationguard.h"
|
||||
|
||||
#if QT_VERSION >= 0x040400 || defined(DOXYGEN_RUN)
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#ifndef KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H
|
||||
#define KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H
|
||||
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#include "kdtoolsglobal.h"
|
||||
|
||||
#include <QByteArray>
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#ifndef KDTOOLS_KDTOOLSGLOBAL_H
|
||||
#define KDTOOLS_KDTOOLSGLOBAL_H
|
||||
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#include "pimpl_ptr.h"
|
||||
|
||||
/*!
|
||||
@ -9,7 +15,7 @@
|
||||
(The exception safety of this class has not been evaluated yet.)
|
||||
|
||||
pimpl_ptr is a smart immutable pointer, which owns the contained object. Unlike other smart pointers,
|
||||
it creates a standard constructed object when instanciated via the
|
||||
it creates a standard constructed object when instanciated via the
|
||||
\link pimpl_ptr() standard constructor\endlink.
|
||||
Additionally, pimpl_ptr respects constness of the pointer object and returns \c const \c T* for
|
||||
a const pimpl_ptr object.
|
||||
@ -126,7 +132,7 @@
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn T * pimpl_ptr::operator->()
|
||||
\fn T * pimpl_ptr::operator->()
|
||||
|
||||
Member-by-pointer operator. Returns get().
|
||||
*/
|
||||
@ -163,7 +169,7 @@ KDAB_UNITTEST_SIMPLE( pimpl_ptr, "kdcoretools" ) {
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
{
|
||||
QPointer< QObject > o;
|
||||
{
|
||||
kdtools::pimpl_ptr< QObject > qobject( new QObject );
|
||||
@ -174,7 +180,7 @@ KDAB_UNITTEST_SIMPLE( pimpl_ptr, "kdcoretools" ) {
|
||||
assertNull( o );
|
||||
}
|
||||
|
||||
{
|
||||
{
|
||||
const kdtools::pimpl_ptr< QObject > qobject( new QObject );
|
||||
const QObject* o = qobject.get();
|
||||
assertEqual( o, qobject.operator->() );
|
@ -1,3 +1,9 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
#ifndef KDTOOLSCORE_PIMPL_PTR_H
|
||||
#define KDTOOLSCORE_PIMPL_PTR_H
|
||||
|
@ -1,5 +1,4 @@
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
/*
|
||||
* SPDX-License-Identifier: GPL-3.0+
|
||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||
*/
|
@ -1,5 +1,4 @@
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
/*
|
||||
* SPDX-License-Identifier: GPL-3.0+
|
||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||
*/
|
@ -1,5 +1,4 @@
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
/*
|
||||
* SPDX-License-Identifier: GPL-3.0+
|
||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||
*/
|
@ -1,5 +1,4 @@
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
/*
|
||||
* SPDX-License-Identifier: GPL-3.0+
|
||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||
*/
|
@ -1,5 +1,4 @@
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
/*
|
||||
* SPDX-License-Identifier: MIT
|
||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
||||
*/
|
@ -1,5 +1,4 @@
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
/*
|
||||
* SPDX-License-Identifier: MIT
|
||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
||||
*/
|
16
CHANGES
16
CHANGES
@ -3,7 +3,21 @@ contributors are listed. Note that Calamares does not have a historical
|
||||
changelog -- this log starts with version 3.2.0. The release notes on the
|
||||
website will have to do for older versions.
|
||||
|
||||
# 3.2.12 (unreleased) #
|
||||
# 3.2.13 (unreleased) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
|
||||
## Core ##
|
||||
|
||||
- The Calamares standard coding style -- embodied in `ci/calamaresstyle`
|
||||
has had a few updates and has now been consistently applied across
|
||||
the core codebase (e.g. libcalamares, libcalamaresui, calamares, but
|
||||
not the modules).
|
||||
|
||||
## Modules ##
|
||||
|
||||
|
||||
# 3.2.12 (2019-08-07) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- apt-ghetto
|
||||
|
@ -37,7 +37,7 @@
|
||||
|
||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
||||
project( CALAMARES
|
||||
VERSION 3.2.12
|
||||
VERSION 3.2.13
|
||||
LANGUAGES C CXX )
|
||||
|
||||
set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development
|
||||
|
488
LICENSES/LGPLv2-KDAB
Normal file
488
LICENSES/LGPLv2-KDAB
Normal file
@ -0,0 +1,488 @@
|
||||
|
||||
The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
|
||||
You may use, distribute and copy the KD Tools Library under the terms of
|
||||
GNU Library General Public License version 2, which is displayed below.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, 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
|
||||
this service 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 make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
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
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library 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 Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "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
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY 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
|
||||
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey 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 library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
0
ci/AppImage.sh
Normal file → Executable file
0
ci/AppImage.sh
Normal file → Executable file
4
ci/RELEASE.sh
Normal file → Executable file
4
ci/RELEASE.sh
Normal file → Executable file
@ -54,7 +54,7 @@ if test "x$BUILD_CLANG" = "xtrue" ; then
|
||||
rm -rf "$BUILDDIR"
|
||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR (clang)." ; exit 1 ; }
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -93,7 +93,7 @@ TMPDIR=$(mktemp -d --suffix="-calamares-$D")
|
||||
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
||||
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
||||
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
||||
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed." ; exit 1 ; }
|
||||
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR." ; exit 1 ; }
|
||||
|
||||
### Cleanup
|
||||
#
|
||||
|
2
ci/txstats.py
Normal file → Executable file
2
ci/txstats.py
Normal file → Executable file
@ -1,4 +1,4 @@
|
||||
#! /usr/bin/env python
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# Uses the Transifex API to get a list of enabled languages,
|
||||
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
||||
|
@ -17,8 +17,9 @@ include_directories(
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../libcalamares
|
||||
|
||||
../libcalamares
|
||||
../libcalamaresui
|
||||
${CMAKE_SOURCE_DIR}/src/libcalamares
|
||||
${CMAKE_SOURCE_DIR}/src//libcalamaresui
|
||||
${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# Translations
|
||||
|
@ -21,10 +21,11 @@
|
||||
#include "CalamaresApplication.h"
|
||||
|
||||
#include "CalamaresConfig.h"
|
||||
#include "kdsingleapplicationguard/kdsingleapplicationguard.h"
|
||||
#include "utils/Dirs.h"
|
||||
#include "utils/Logger.h"
|
||||
|
||||
#include "3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h"
|
||||
|
||||
#ifdef WITH_KF5Crash
|
||||
#include <KF5/KCoreAddons/KAboutData>
|
||||
#include <KF5/KCrash/KCrash>
|
||||
|
@ -51,12 +51,16 @@ set( libSources
|
||||
utils/Variant.cpp
|
||||
utils/Yaml.cpp
|
||||
)
|
||||
set( kdsagSources
|
||||
set( _kdsagSources
|
||||
kdsingleapplicationguard/kdsingleapplicationguard.cpp
|
||||
kdsingleapplicationguard/kdsharedmemorylocker.cpp
|
||||
kdsingleapplicationguard/kdtoolsglobal.cpp
|
||||
kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp
|
||||
)
|
||||
set( kdsagSources "" )
|
||||
foreach( _s ${_kdsagSources} )
|
||||
list( APPEND kdsagSources ${CMAKE_SOURCE_DIR}/3rdparty/${_s} )
|
||||
endforeach()
|
||||
mark_thirdparty_code( ${kdsagSources} )
|
||||
|
||||
include_directories(
|
||||
|
@ -12,4 +12,4 @@
|
||||
#cmakedefine WITH_PYTHON
|
||||
#cmakedefine WITH_PYTHONQT
|
||||
|
||||
#endif // CALAMARESCONFIG_H
|
||||
#endif // CALAMARESCONFIG_H
|
||||
|
@ -30,7 +30,7 @@ namespace CalamaresUtils
|
||||
namespace GeoIP
|
||||
{
|
||||
|
||||
GeoIPJSON::GeoIPJSON(const QString& attribute)
|
||||
GeoIPJSON::GeoIPJSON( const QString& attribute )
|
||||
: Interface( attribute.isEmpty() ? QStringLiteral( "time_zone" ) : attribute )
|
||||
{
|
||||
}
|
||||
@ -42,19 +42,25 @@ GeoIPJSON::GeoIPJSON(const QString& attribute)
|
||||
* "foo" of @p m, like a regular JSON lookup would.
|
||||
*/
|
||||
static QString
|
||||
selectMap( const QVariantMap& m, const QStringList& l, int index)
|
||||
selectMap( const QVariantMap& m, const QStringList& l, int index )
|
||||
{
|
||||
if ( index >= l.count() )
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString attributeName = l[index];
|
||||
QString attributeName = l[ index ];
|
||||
if ( index == l.count() - 1 )
|
||||
{
|
||||
return CalamaresUtils::getString( m, attributeName );
|
||||
}
|
||||
else
|
||||
{
|
||||
bool success = false; // bogus
|
||||
if ( m.contains( attributeName ) )
|
||||
return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index+1 );
|
||||
{
|
||||
return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index + 1 );
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
}
|
||||
@ -67,18 +73,18 @@ GeoIPJSON::rawReply( const QByteArray& data )
|
||||
YAML::Node doc = YAML::Load( data );
|
||||
|
||||
QVariant var = CalamaresUtils::yamlToVariant( doc );
|
||||
if ( !var.isNull() &&
|
||||
var.isValid() &&
|
||||
var.type() == QVariant::Map )
|
||||
if ( !var.isNull() && var.isValid() && var.type() == QVariant::Map )
|
||||
{
|
||||
return selectMap( var.toMap(), m_element.split('.'), 0 );
|
||||
return selectMap( var.toMap(), m_element.split( '.' ), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
cWarning() << "Invalid YAML data for GeoIPJSON";
|
||||
}
|
||||
}
|
||||
catch ( YAML::Exception& e )
|
||||
{
|
||||
CalamaresUtils::explainYamlException( e, data, "GeoIP data");
|
||||
CalamaresUtils::explainYamlException( e, data, "GeoIP data" );
|
||||
}
|
||||
|
||||
return QString();
|
||||
@ -90,5 +96,5 @@ GeoIPJSON::processReply( const QByteArray& data )
|
||||
return splitTZString( rawReply( data ) );
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
|
@ -45,9 +45,9 @@ public:
|
||||
explicit GeoIPJSON( const QString& attribute = QString() );
|
||||
|
||||
virtual RegionZonePair processReply( const QByteArray& ) override;
|
||||
virtual QString rawReply(const QByteArray & ) override;
|
||||
} ;
|
||||
virtual QString rawReply( const QByteArray& ) override;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
#endif
|
||||
|
@ -34,21 +34,16 @@ QTEST_GUILESS_MAIN( GeoIPTests )
|
||||
|
||||
using namespace CalamaresUtils::GeoIP;
|
||||
|
||||
GeoIPTests::GeoIPTests()
|
||||
{
|
||||
}
|
||||
GeoIPTests::GeoIPTests() {}
|
||||
|
||||
GeoIPTests::~GeoIPTests()
|
||||
{
|
||||
}
|
||||
GeoIPTests::~GeoIPTests() {}
|
||||
|
||||
void
|
||||
GeoIPTests::initTestCase()
|
||||
{
|
||||
}
|
||||
|
||||
static const char json_data_attribute[] =
|
||||
"{\"time_zone\":\"Europe/Amsterdam\"}";
|
||||
static const char json_data_attribute[] = "{\"time_zone\":\"Europe/Amsterdam\"}";
|
||||
|
||||
void
|
||||
GeoIPTests::testJSON()
|
||||
@ -67,7 +62,8 @@ GeoIPTests::testJSON()
|
||||
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
||||
}
|
||||
|
||||
void GeoIPTests::testJSONalt()
|
||||
void
|
||||
GeoIPTests::testJSONalt()
|
||||
{
|
||||
GeoIPJSON handler( "zona_de_hora" );
|
||||
|
||||
@ -102,7 +98,7 @@ GeoIPTests::testJSONbad()
|
||||
|
||||
|
||||
static const char xml_data_ubiquity[] =
|
||||
R"(<Response>
|
||||
R"(<Response>
|
||||
<Ip>85.150.1.1</Ip>
|
||||
<Status>OK</Status>
|
||||
<CountryCode>NL</CountryCode>
|
||||
@ -133,8 +129,8 @@ GeoIPTests::testXML()
|
||||
void
|
||||
GeoIPTests::testXML2()
|
||||
{
|
||||
static const char data[] =
|
||||
"<Response><TimeZone>America/North Dakota/Beulah</TimeZone></Response>"; // With a space!
|
||||
static const char data[]
|
||||
= "<Response><TimeZone>America/North Dakota/Beulah</TimeZone></Response>"; // With a space!
|
||||
|
||||
#ifdef QT_XML_LIB
|
||||
GeoIPXML handler;
|
||||
@ -146,7 +142,8 @@ GeoIPTests::testXML2()
|
||||
}
|
||||
|
||||
|
||||
void GeoIPTests::testXMLalt()
|
||||
void
|
||||
GeoIPTests::testXMLalt()
|
||||
{
|
||||
#ifdef QT_XML_LIB
|
||||
GeoIPXML handler( "ZT" );
|
||||
@ -173,29 +170,30 @@ GeoIPTests::testXMLbad()
|
||||
#endif
|
||||
}
|
||||
|
||||
void GeoIPTests::testSplitTZ()
|
||||
void
|
||||
GeoIPTests::testSplitTZ()
|
||||
{
|
||||
using namespace CalamaresUtils::GeoIP;
|
||||
auto tz = splitTZString( QStringLiteral("Moon/Dark_side") );
|
||||
QCOMPARE( tz.first, QStringLiteral("Moon") );
|
||||
QCOMPARE( tz.second, QStringLiteral("Dark_side") );
|
||||
auto tz = splitTZString( QStringLiteral( "Moon/Dark_side" ) );
|
||||
QCOMPARE( tz.first, QStringLiteral( "Moon" ) );
|
||||
QCOMPARE( tz.second, QStringLiteral( "Dark_side" ) );
|
||||
|
||||
// Some providers return weirdly escaped data
|
||||
tz = splitTZString( QStringLiteral("America\\/NewYork") );
|
||||
QCOMPARE( tz.first, QStringLiteral("America") );
|
||||
QCOMPARE( tz.second, QStringLiteral("NewYork") ); // That's not actually the zone name
|
||||
tz = splitTZString( QStringLiteral( "America\\/NewYork" ) );
|
||||
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
||||
QCOMPARE( tz.second, QStringLiteral( "NewYork" ) ); // That's not actually the zone name
|
||||
|
||||
// Check that bogus data fails
|
||||
tz = splitTZString( QString() );
|
||||
QCOMPARE( tz.first, QString() );
|
||||
|
||||
tz = splitTZString( QStringLiteral("America.NewYork") );
|
||||
tz = splitTZString( QStringLiteral( "America.NewYork" ) );
|
||||
QCOMPARE( tz.first, QString() );
|
||||
|
||||
// Check that three-level is split properly and space is replaced
|
||||
tz = splitTZString( QStringLiteral("America/North Dakota/Beulah") );
|
||||
QCOMPARE( tz.first, QStringLiteral("America") );
|
||||
QCOMPARE( tz.second, QStringLiteral("North_Dakota/Beulah") );
|
||||
tz = splitTZString( QStringLiteral( "America/North Dakota/Beulah" ) );
|
||||
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
||||
QCOMPARE( tz.second, QStringLiteral( "North_Dakota/Beulah" ) );
|
||||
}
|
||||
|
||||
|
||||
@ -217,19 +215,20 @@ synchronous_get( const char* urlstring )
|
||||
return reply->readAll();
|
||||
}
|
||||
|
||||
#define CHECK_GET(t, selector, url) \
|
||||
#define CHECK_GET( t, selector, url ) \
|
||||
{ \
|
||||
auto tz = GeoIP##t( selector ).processReply( synchronous_get( url ) ); \
|
||||
qDebug() << tz; \
|
||||
QCOMPARE( default_tz, tz ); \
|
||||
auto tz2 = CalamaresUtils::GeoIP::Handler( ""#t, url, selector ).get(); \
|
||||
auto tz2 = CalamaresUtils::GeoIP::Handler( "" #t, url, selector ).get(); \
|
||||
qDebug() << tz2; \
|
||||
QCOMPARE( default_tz, tz2 ); \
|
||||
}
|
||||
|
||||
void GeoIPTests::testGet()
|
||||
void
|
||||
GeoIPTests::testGet()
|
||||
{
|
||||
if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral("TEST_HTTP_GET") ) )
|
||||
if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral( "TEST_HTTP_GET" ) ) )
|
||||
{
|
||||
qDebug() << "Skipping HTTP GET tests, set TEST_HTTP_GET environment variable to enable";
|
||||
return;
|
||||
@ -248,14 +247,14 @@ void GeoIPTests::testGet()
|
||||
// Each expansion of CHECK_GET does a synchronous GET, then checks that
|
||||
// the TZ data is the same as the default_tz; this is fragile if the
|
||||
// services don't agree on the location of where the test is run.
|
||||
CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent
|
||||
CHECK_GET( JSON, QStringLiteral("timezone"), "https://ipapi.co/json" ) // Different JSON
|
||||
CHECK_GET( JSON, QStringLiteral("timezone"), "http://ip-api.com/json" )
|
||||
CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent
|
||||
CHECK_GET( JSON, QStringLiteral( "timezone" ), "https://ipapi.co/json" ) // Different JSON
|
||||
CHECK_GET( JSON, QStringLiteral( "timezone" ), "http://ip-api.com/json" )
|
||||
|
||||
CHECK_GET( JSON, QStringLiteral("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON
|
||||
CHECK_GET( JSON, QStringLiteral( "Location.TimeZone" ), "https://geoip.kde.org/debug" ) // 2-level JSON
|
||||
|
||||
#ifdef QT_XML_LIB
|
||||
CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format
|
||||
CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service
|
||||
CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service
|
||||
#endif
|
||||
}
|
||||
|
@ -48,10 +48,12 @@ getElementTexts( const QByteArray& data, const QString& tag )
|
||||
cDebug() << "GeoIP found" << tzElements.length() << "elements";
|
||||
for ( int it = 0; it < tzElements.length(); ++it )
|
||||
{
|
||||
auto e = tzElements.at(it).toElement();
|
||||
auto e = tzElements.at( it ).toElement();
|
||||
auto e_text = e.text();
|
||||
if ( !e_text.isEmpty() )
|
||||
{
|
||||
elements.append( e_text );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -60,7 +62,9 @@ getElementTexts( const QByteArray& data, const QString& tag )
|
||||
}
|
||||
|
||||
if ( elements.count() < 1 )
|
||||
{
|
||||
cWarning() << "GeopIP XML had no non-empty elements" << tag;
|
||||
}
|
||||
|
||||
return elements;
|
||||
}
|
||||
@ -71,7 +75,9 @@ GeoIPXML::rawReply( const QByteArray& data )
|
||||
{
|
||||
for ( const auto& e : getElementTexts( data, m_element ) )
|
||||
if ( !e.isEmpty() )
|
||||
{
|
||||
return e;
|
||||
}
|
||||
|
||||
return QString();
|
||||
}
|
||||
@ -83,11 +89,13 @@ GeoIPXML::processReply( const QByteArray& data )
|
||||
{
|
||||
auto tz = splitTZString( e );
|
||||
if ( !tz.first.isEmpty() )
|
||||
{
|
||||
return tz;
|
||||
}
|
||||
}
|
||||
|
||||
return RegionZonePair();
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
|
@ -45,9 +45,9 @@ public:
|
||||
explicit GeoIPXML( const QString& element = QString() );
|
||||
|
||||
virtual RegionZonePair processReply( const QByteArray& ) override;
|
||||
virtual QString rawReply(const QByteArray & ) override;
|
||||
} ;
|
||||
virtual QString rawReply( const QByteArray& ) override;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
#endif
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "Handler.h"
|
||||
|
||||
#include "GeoIPJSON.h"
|
||||
#if defined(QT_XML_LIB)
|
||||
#if defined( QT_XML_LIB )
|
||||
#include "GeoIPXML.h"
|
||||
#endif
|
||||
|
||||
@ -28,8 +28,8 @@
|
||||
#include "utils/Variant.h"
|
||||
|
||||
#include <QEventLoop>
|
||||
#include <QNetworkRequest>
|
||||
#include <QNetworkReply>
|
||||
#include <QNetworkRequest>
|
||||
|
||||
#include <memory>
|
||||
|
||||
@ -38,11 +38,15 @@ handlerTypes()
|
||||
{
|
||||
using Type = CalamaresUtils::GeoIP::Handler::Type;
|
||||
|
||||
// *INDENT-OFF*
|
||||
// clang-format off
|
||||
static const NamedEnumTable<Type> names{
|
||||
{ QStringLiteral( "none" ), Type::None},
|
||||
{ QStringLiteral( "json" ), Type::JSON},
|
||||
{ QStringLiteral( "xml" ), Type::XML}
|
||||
{ QStringLiteral( "none" ), Type::None },
|
||||
{ QStringLiteral( "json" ), Type::JSON },
|
||||
{ QStringLiteral( "xml" ), Type::XML }
|
||||
};
|
||||
// *INDENT-ON*
|
||||
// clang-format on
|
||||
|
||||
return names;
|
||||
}
|
||||
@ -72,7 +76,7 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri
|
||||
{
|
||||
cWarning() << "GeoIP style *none* does not do anything.";
|
||||
}
|
||||
#if !defined(QT_XML_LIB)
|
||||
#if !defined( QT_XML_LIB )
|
||||
else if ( m_type == Type::XML )
|
||||
{
|
||||
m_type = Type::None;
|
||||
@ -81,9 +85,7 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri
|
||||
#endif
|
||||
}
|
||||
|
||||
Handler::~Handler()
|
||||
{
|
||||
}
|
||||
Handler::~Handler() {}
|
||||
|
||||
static QByteArray
|
||||
synchronous_get( const QString& urlstring )
|
||||
@ -104,17 +106,17 @@ synchronous_get( const QString& urlstring )
|
||||
static std::unique_ptr< Interface >
|
||||
create_interface( Handler::Type t, const QString& selector )
|
||||
{
|
||||
switch( t )
|
||||
switch ( t )
|
||||
{
|
||||
case Handler::Type::None:
|
||||
return nullptr;
|
||||
case Handler::Type::JSON:
|
||||
return std::make_unique< GeoIPJSON >( selector );
|
||||
case Handler::Type::XML:
|
||||
#if defined(QT_XML_LIB)
|
||||
return std::make_unique< GeoIPXML >( selector );
|
||||
case Handler::Type::None:
|
||||
return nullptr;
|
||||
case Handler::Type::JSON:
|
||||
return std::make_unique< GeoIPJSON >( selector );
|
||||
case Handler::Type::XML:
|
||||
#if defined( QT_XML_LIB )
|
||||
return std::make_unique< GeoIPXML >( selector );
|
||||
#else
|
||||
return nullptr;
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
NOTREACHED return nullptr;
|
||||
@ -125,7 +127,9 @@ do_query( Handler::Type type, const QString& url, const QString& selector )
|
||||
{
|
||||
const auto interface = create_interface( type, selector );
|
||||
if ( !interface )
|
||||
{
|
||||
return RegionZonePair();
|
||||
}
|
||||
|
||||
return interface->processReply( synchronous_get( url ) );
|
||||
}
|
||||
@ -135,7 +139,9 @@ do_raw_query( Handler::Type type, const QString& url, const QString& selector )
|
||||
{
|
||||
const auto interface = create_interface( type, selector );
|
||||
if ( !interface )
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
return interface->rawReply( synchronous_get( url ) );
|
||||
}
|
||||
@ -144,7 +150,9 @@ RegionZonePair
|
||||
Handler::get() const
|
||||
{
|
||||
if ( !isValid() )
|
||||
{
|
||||
return RegionZonePair();
|
||||
}
|
||||
return do_query( m_type, m_url, m_selector );
|
||||
}
|
||||
|
||||
@ -156,17 +164,16 @@ Handler::query() const
|
||||
QString url = m_url;
|
||||
QString selector = m_selector;
|
||||
|
||||
return QtConcurrent::run( [=]
|
||||
{
|
||||
return do_query( type, url, selector );
|
||||
} );
|
||||
return QtConcurrent::run( [=] { return do_query( type, url, selector ); } );
|
||||
}
|
||||
|
||||
QString
|
||||
Handler::getRaw() const
|
||||
{
|
||||
if ( !isValid() )
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
return do_raw_query( m_type, m_url, m_selector );
|
||||
}
|
||||
|
||||
@ -178,11 +185,8 @@ Handler::queryRaw() const
|
||||
QString url = m_url;
|
||||
QString selector = m_selector;
|
||||
|
||||
return QtConcurrent::run( [=]
|
||||
{
|
||||
return do_raw_query( type, url, selector );
|
||||
} );
|
||||
return QtConcurrent::run( [=] { return do_raw_query( type, url, selector ); } );
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
|
@ -21,9 +21,9 @@
|
||||
|
||||
#include "Interface.h"
|
||||
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
#include <QString>
|
||||
#include <QVariantMap>
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
|
||||
namespace CalamaresUtils
|
||||
{
|
||||
@ -46,7 +46,7 @@ public:
|
||||
None,
|
||||
JSON,
|
||||
XML
|
||||
} ;
|
||||
};
|
||||
|
||||
/** @brief An unconfigured handler; this always returns errors. */
|
||||
Handler();
|
||||
@ -89,7 +89,6 @@ private:
|
||||
const QString m_selector;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
#endif
|
||||
|
||||
|
@ -25,14 +25,12 @@ namespace CalamaresUtils
|
||||
namespace GeoIP
|
||||
{
|
||||
|
||||
Interface::Interface(const QString& e)
|
||||
Interface::Interface( const QString& e )
|
||||
: m_element( e )
|
||||
{
|
||||
}
|
||||
|
||||
Interface::~Interface()
|
||||
{
|
||||
}
|
||||
Interface::~Interface() {}
|
||||
|
||||
RegionZonePair
|
||||
splitTZString( const QString& tz )
|
||||
@ -53,5 +51,5 @@ splitTZString( const QString& tz )
|
||||
return RegionZonePair( QString(), QString() );
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
class QByteArray;
|
||||
|
||||
namespace CalamaresUtils
|
||||
namespace CalamaresUtils
|
||||
{
|
||||
namespace GeoIP
|
||||
{
|
||||
@ -38,18 +38,27 @@ namespace GeoIP
|
||||
* pasting the strings back together with a "/" is the right thing to
|
||||
* do. The Zone **may** contain a "/" (e.g. "Kentucky/Monticello").
|
||||
*/
|
||||
class DLLEXPORT RegionZonePair : public QPair<QString, QString>
|
||||
class DLLEXPORT RegionZonePair : public QPair< QString, QString >
|
||||
{
|
||||
public:
|
||||
/** @brief Construct from an existing pair. */
|
||||
explicit RegionZonePair( const QPair& p ) : QPair(p) { }
|
||||
explicit RegionZonePair( const QPair& p )
|
||||
: QPair( p )
|
||||
{
|
||||
}
|
||||
/** @brief Construct from two strings, like qMakePair(). */
|
||||
RegionZonePair( const QString& region, const QString& zone ) : QPair( region, zone ) { }
|
||||
RegionZonePair( const QString& region, const QString& zone )
|
||||
: QPair( region, zone )
|
||||
{
|
||||
}
|
||||
/** @brief An invalid zone pair (empty strings). */
|
||||
RegionZonePair() : QPair( QString(), QString() ) { }
|
||||
RegionZonePair()
|
||||
: QPair( QString(), QString() )
|
||||
{
|
||||
}
|
||||
|
||||
bool isValid() const { return !first.isEmpty(); }
|
||||
} ;
|
||||
};
|
||||
|
||||
/** @brief Splits a region/zone string into a pair.
|
||||
*
|
||||
@ -60,8 +69,7 @@ public:
|
||||
* pair of empty QStrings if it can't. (e.g. America/North Dakota/Beulah
|
||||
* will return "America", "North_Dakota/Beulah").
|
||||
*/
|
||||
DLLEXPORT RegionZonePair
|
||||
splitTZString( const QString& s );
|
||||
DLLEXPORT RegionZonePair splitTZString( const QString& s );
|
||||
|
||||
/**
|
||||
* @brief Interface for GeoIP retrievers.
|
||||
@ -93,8 +101,8 @@ protected:
|
||||
Interface( const QString& e = QString() );
|
||||
|
||||
QString m_element; // string for selecting from data
|
||||
} ;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace
|
||||
} // namespace GeoIP
|
||||
} // namespace CalamaresUtils
|
||||
#endif
|
||||
|
@ -30,34 +30,40 @@
|
||||
using std::cerr;
|
||||
using namespace CalamaresUtils::GeoIP;
|
||||
|
||||
int main(int argc, char** argv)
|
||||
int
|
||||
main( int argc, char** argv )
|
||||
{
|
||||
if (argc != 2)
|
||||
if ( argc != 2 )
|
||||
{
|
||||
cerr << "Usage: curl url | test_geoip <format>\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Interface* handler = nullptr;
|
||||
if ( QStringLiteral( "json" ) == argv[1] )
|
||||
if ( QStringLiteral( "json" ) == argv[ 1 ] )
|
||||
{
|
||||
handler = new GeoIPJSON;
|
||||
}
|
||||
#ifdef QT_XML_LIB
|
||||
else if ( QStringLiteral( "xml" ) == argv[1] )
|
||||
else if ( QStringLiteral( "xml" ) == argv[ 1 ] )
|
||||
{
|
||||
handler = new GeoIPXML;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( !handler )
|
||||
{
|
||||
cerr << "Unknown format '" << argv[1] << "'\n";
|
||||
cerr << "Unknown format '" << argv[ 1 ] << "'\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
QByteArray ba;
|
||||
while( !std::cin.eof() ) {
|
||||
char arr[1024];
|
||||
std::cin.read(arr, sizeof(arr));
|
||||
int s = static_cast<int>( std::cin.gcount() );
|
||||
ba.append(arr, s);
|
||||
while ( !std::cin.eof() )
|
||||
{
|
||||
char arr[ 1024 ];
|
||||
std::cin.read( arr, sizeof( arr ) );
|
||||
int s = static_cast< int >( std::cin.gcount() );
|
||||
ba.append( arr, s );
|
||||
}
|
||||
|
||||
auto tz = handler->processReply( ba );
|
||||
@ -67,7 +73,8 @@ int main(int argc, char** argv)
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "TimeZone Region=" << tz.first.toLatin1().constData() << "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n';
|
||||
std::cout << "TimeZone Region=" << tz.first.toLatin1().constData()
|
||||
<< "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n';
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -35,6 +35,8 @@ LocaleTests::~LocaleTests() {}
|
||||
void
|
||||
LocaleTests::initTestCase()
|
||||
{
|
||||
// Otherwise plain get() is dubious in the TranslatableConfiguration tests
|
||||
QVERIFY( ( QLocale().name() == "C" ) || ( QLocale().name() == "en_US" ) );
|
||||
}
|
||||
|
||||
void
|
||||
@ -121,7 +123,6 @@ LocaleTests::testTranslatableConfig1()
|
||||
QVERIFY( ts0.isEmpty() );
|
||||
QCOMPARE( ts0.count(), 1 ); // the empty string
|
||||
|
||||
QCOMPARE( QLocale().name(), "C" ); // Otherwise plain get() is dubious
|
||||
CalamaresUtils::Locale::TranslatedString ts1( "Hello" );
|
||||
QCOMPARE( ts1.count(), 1 );
|
||||
QVERIFY( !ts1.isEmpty() );
|
||||
@ -144,7 +145,6 @@ LocaleTests::testTranslatableConfig1()
|
||||
void
|
||||
LocaleTests::testTranslatableConfig2()
|
||||
{
|
||||
QCOMPARE( QLocale().name(), "C" ); // Otherwise plain get() is dubious
|
||||
QVariantMap map;
|
||||
|
||||
for ( const auto& language : someLanguages() )
|
||||
|
@ -51,14 +51,14 @@ public:
|
||||
}
|
||||
|
||||
/** @brief How many strings (translations) are there?
|
||||
*
|
||||
*
|
||||
* This is always at least 1 (for the untranslated string),
|
||||
* but may be more than 1 even when isEmpty() is true --
|
||||
* if there is no untranslated version, for instance.
|
||||
*/
|
||||
int count() const { return m_strings.count(); }
|
||||
/** @brief Consider this string empty?
|
||||
*
|
||||
*
|
||||
* Only the state of the untranslated string is considered,
|
||||
* so count() may be more than 1 even while the string is empty.
|
||||
*/
|
||||
|
@ -2,7 +2,7 @@
|
||||
# view modules, view steps, widgets, and branding.
|
||||
|
||||
# The UI libs use the non-UI library
|
||||
include_directories( ${CMAKE_SOURCE_DIR}/src/libcalamares ${CMAKE_BINARY_DIR}/src/libcalamares )
|
||||
include_directories( ${CMAKE_SOURCE_DIR}/src/libcalamares ${CMAKE_BINARY_DIR}/src/libcalamares ${CMAKE_SOURCE_DIR} )
|
||||
|
||||
set( calamaresui_SOURCES
|
||||
modulesystem/CppJobModule.cpp
|
||||
@ -18,16 +18,16 @@ set( calamaresui_SOURCES
|
||||
utils/ImageRegistry.cpp
|
||||
utils/Paste.cpp
|
||||
|
||||
utils/qjsonmodel.cpp
|
||||
utils/qjsonitem.cpp
|
||||
${CMAKE_SOURCE_DIR}/3rdparty/qjsonmodel.cpp
|
||||
${CMAKE_SOURCE_DIR}/3rdparty/qjsonitem.cpp
|
||||
|
||||
viewpages/BlankViewStep.cpp
|
||||
viewpages/ViewStep.cpp
|
||||
|
||||
widgets/ClickableLabel.cpp
|
||||
widgets/FixedAspectRatioLabel.cpp
|
||||
widgets/waitingspinnerwidget.cpp
|
||||
widgets/WaitingWidget.cpp
|
||||
${CMAKE_SOURCE_DIR}/3rdparty/waitingspinnerwidget.cpp
|
||||
|
||||
ExecutionViewStep.cpp
|
||||
Branding.cpp
|
||||
@ -36,10 +36,9 @@ set( calamaresui_SOURCES
|
||||
|
||||
# Don't warn about third-party sources
|
||||
mark_thirdparty_code(
|
||||
utils/ImageRegistry.cpp
|
||||
utils/qjsonitem.cpp
|
||||
utils/qjsonmodel.cpp
|
||||
widgets/waitingspinnerwidget.cpp
|
||||
${CMAKE_SOURCE_DIR}/3rdparty/qjsonitem.cpp
|
||||
${CMAKE_SOURCE_DIR}/3rdparty/qjsonmodel.cpp
|
||||
${CMAKE_SOURCE_DIR}/3rdparty/waitingspinnerwidget.cpp
|
||||
)
|
||||
|
||||
set( calamaresui_UI
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "Branding.h"
|
||||
#include "modulesystem/Module.h"
|
||||
#include "modulesystem/ModuleManager.h"
|
||||
#include "utils/qjsonmodel.h"
|
||||
|
||||
#include "GlobalStorage.h"
|
||||
#include "Job.h"
|
||||
@ -31,11 +30,13 @@
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/Retranslator.h"
|
||||
|
||||
#include "3rdparty/qjsonmodel.h"
|
||||
|
||||
#ifdef WITH_PYTHONQT
|
||||
#include <gui/PythonQtScriptingConsole.h>
|
||||
#include "ViewManager.h"
|
||||
#include "viewpages/PythonQtViewStep.h"
|
||||
|
||||
#include <gui/PythonQtScriptingConsole.h>
|
||||
#endif
|
||||
|
||||
#include <QJsonDocument>
|
||||
|
@ -20,7 +20,8 @@
|
||||
#include "WaitingWidget.h"
|
||||
|
||||
#include "utils/CalamaresUtilsGui.h"
|
||||
#include "waitingspinnerwidget.h"
|
||||
|
||||
#include "3rdparty/waitingspinnerwidget.h"
|
||||
|
||||
#include <QBoxLayout>
|
||||
#include <QLabel>
|
||||
|
@ -183,23 +183,6 @@ PackageChooserViewStep::setConfigurationMap( const QVariantMap& configurationMap
|
||||
fillModel( configurationMap.value( "items" ).toList() );
|
||||
}
|
||||
|
||||
// TODO: replace this hard-coded model
|
||||
if ( !m_model )
|
||||
{
|
||||
m_model = new PackageListModel( nullptr );
|
||||
m_model->addPackage( PackageItem { QString(),
|
||||
QString(),
|
||||
"No Desktop",
|
||||
"Please pick a desktop environment from the list. "
|
||||
"If you don't want to install a desktop, that's fine, "
|
||||
"your system will start up in text-only mode and you can "
|
||||
"install a desktop environment later.",
|
||||
":/images/no-selection.png" } );
|
||||
m_model->addPackage( PackageItem { "kde", "kde", "Plasma", "Plasma Desktop", ":/images/kde.png" } );
|
||||
m_model->addPackage( PackageItem {
|
||||
"gnome", "gnome", "GNOME", "GNU Networked Object Modeling Environment Desktop", ":/images/gnome.png" } );
|
||||
}
|
||||
|
||||
if ( first_time && m_widget && m_model )
|
||||
{
|
||||
hookupModel();
|
||||
|
@ -45,13 +45,23 @@ PackageChooserTests::testBogus()
|
||||
void
|
||||
PackageChooserTests::testAppData()
|
||||
{
|
||||
// Path from the build-dir
|
||||
QString appdataName( "../io.calamares.calamares.appdata.xml" );
|
||||
// Path from the build-dir and from the running-the-test varies,
|
||||
// for in-source build, for build/, and for tests-in-build/,
|
||||
// so look in multiple places.
|
||||
QString appdataName( "io.calamares.calamares.appdata.xml" );
|
||||
for ( const auto& prefix : QStringList { "", "../", "../../../", "../../../../" } )
|
||||
{
|
||||
if ( QFile::exists( prefix + appdataName ) )
|
||||
{
|
||||
appdataName = prefix + appdataName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
QVERIFY( QFile::exists( appdataName ) );
|
||||
|
||||
QVariantMap m;
|
||||
m.insert( "appdata", appdataName );
|
||||
|
||||
|
||||
PackageItem p1 = PackageItem::fromAppData( m );
|
||||
#ifdef HAVE_XML
|
||||
QVERIFY( p1.isValid() );
|
||||
@ -63,10 +73,10 @@ PackageChooserTests::testAppData()
|
||||
QCOMPARE( p1.description.get( QLocale( "en_GB" ) ), "Calamares Linux Installer" );
|
||||
QCOMPARE( p1.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." );
|
||||
QVERIFY( p1.screenshot.isNull() );
|
||||
|
||||
|
||||
m.insert( "id", "calamares" );
|
||||
m.insert( "screenshot", ":/images/calamares.png" );
|
||||
PackageItem p2= PackageItem::fromAppData( m );
|
||||
PackageItem p2 = PackageItem::fromAppData( m );
|
||||
QVERIFY( p2.isValid() );
|
||||
QCOMPARE( p2.id, "calamares" );
|
||||
QCOMPARE( p2.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." );
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.6 KiB |
@ -1,8 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/no-selection.png</file>
|
||||
<file>images/kde.png</file>
|
||||
<file>images/gnome.png</file>
|
||||
<file>images/calamares.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@ -5,6 +5,8 @@
|
||||
option( DEBUG_PARTITION_UNSAFE "Allow unsafe partitioning choices." OFF )
|
||||
option( DEBUG_PARTITION_LAME "Unsafe partitioning will error out on exec." ON )
|
||||
|
||||
include_directories( ${CMAKE_SOURCE_DIR} ) # For 3rdparty
|
||||
|
||||
set( _partition_defs )
|
||||
if( DEBUG_PARTITION_UNSAFE )
|
||||
if( DEBUG_PARTITION_LAME )
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#include "ScanningDialog.h"
|
||||
|
||||
#include "widgets/waitingspinnerwidget.h"
|
||||
#include "3rdparty/waitingspinnerwidget.h"
|
||||
|
||||
#include <QBoxLayout>
|
||||
#include <QLabel>
|
||||
|
Loading…
Reference in New Issue
Block a user