Merge remote-tracking branch 'origin/13.0' into qds/dev

Change-Id: Ief07ead0b4cf513c70bd74d4f5e28e4642edc78e
This commit is contained in:
Tim Jenssen
2024-05-17 19:55:06 +02:00
23 changed files with 128 additions and 71 deletions

View File

@@ -50,8 +50,9 @@
*/
/*!
\fn void ExtensionSystem::PluginView::pluginSettingsChanged(ExtensionSystem::PluginSpec *spec)
The settings for the plugin list entry corresponding to \a spec changed.
\fn void ExtensionSystem::PluginView::pluginsChanged(const QSet<ExtensionSystem::PluginSpec *> &spec, bool enabled)
The value of \a enabled for the plugin list entry corresponding to \a spec
changed.
*/
using namespace Utils;

View File

@@ -115,6 +115,17 @@ public:
their data, or use an ID, neither of these is mandatory.
*/
/*!
\enum Utils::BaseAspect::Announcement
Whether to emit a signal when a value changes.
\value DoEmit
Emit a signal.
\value BeQuiet
Don't emit a signal.
*/
/*!
Constructs a base aspect.
@@ -159,7 +170,9 @@ QVariant BaseAspect::variantValue() const
/*!
Sets \a value.
Prefer the typed setValue() of derived classes.
If \a howToAnnounce is set to \c DoEmit, emits the \c valueChanged signal.
Prefer the typed \c setValue() of the derived classes.
*/
void BaseAspect::setVariantValue(const QVariant &value, Announcement howToAnnounce)
{
@@ -939,9 +952,6 @@ public:
Based on QTextEdit, used for user-editable strings that often
do not fit on a line.
\value PathChooserDisplay
Based on Utils::PathChooser.
\value PasswordLineEditDisplay
Based on QLineEdit, used for password strings
@@ -1416,7 +1426,10 @@ FilePath FilePathAspect::operator()() const
FilePath FilePathAspect::expandedValue() const
{
return FilePath::fromUserInput(TypedAspect::value());
const auto value = TypedAspect::value();
if (!value.isEmpty() && d->m_expanderProvider)
return FilePath::fromUserInput(d->m_expanderProvider()->expand(value));
return FilePath::fromUserInput(value);
}
QString FilePathAspect::value() const
@@ -1425,7 +1438,9 @@ QString FilePathAspect::value() const
}
/*!
Sets the value of this file path aspect to \a value.
Sets the value of this file path aspect to \a filePath.
If \a howToAnnounce is set to \c DoEmit, emits the \c valueChanged signal.
\note This does not use any check that the value is actually
a file path.
@@ -2781,8 +2796,8 @@ void IntegersAspect::addToLayout(Layouting::LayoutItem &parent)
*/
/*!
Constructs a text display showing the \a message with an icon representing
type \a type.
Constructs a text display with the parent \a container. The display shows
\a message and an icon representing the type \a type.
*/
TextDisplay::TextDisplay(AspectContainer *container, const QString &message, InfoLabel::InfoType type)
: BaseAspect(container), d(new Internal::TextDisplayPrivate)

View File

@@ -190,8 +190,6 @@ expected_str<qint64> ProcessStubCreator::startStubProcess(const ProcessSetupData
process->setEnvironment(
setupData.m_environment.appliedToEnvironment(Environment::systemEnvironment()));
process->setEnvironment(setupData.m_environment);
process->start();
process->waitForStarted();
if (process->error() != QProcess::UnknownError) {

View File

@@ -1002,7 +1002,7 @@ QAbstractItemModel *AndroidBuildApkStep::keystoreCertificates()
Process keytoolProc;
keytoolProc.setCommand({androidConfig().keytoolPath(), params});
using namespace std::chrono_literals;
keytoolProc.runBlocking(30s, EventLoopMode::On);
keytoolProc.runBlocking(30s);
if (keytoolProc.result() > ProcessResult::FinishedWithError)
QMessageBox::critical(nullptr, Tr::tr("Error"), Tr::tr("Failed to run keytool."));
else

View File

@@ -275,7 +275,7 @@ void AndroidCreateKeystoreCertificate::buttonBoxAccepted()
Process genKeyCertProc;
genKeyCertProc.setCommand(command);
using namespace std::chrono_literals;
genKeyCertProc.runBlocking(15s, EventLoopMode::On);
genKeyCertProc.runBlocking(15s);
if (genKeyCertProc.result() != ProcessResult::FinishedWithSuccess) {
QMessageBox::critical(this, Tr::tr("Error"),

View File

@@ -614,7 +614,7 @@ bool checkKeystorePassword(const FilePath &keystorePath, const QString &keystore
"--storepass", keystorePasswd});
Process proc;
proc.setCommand(cmd);
proc.runBlocking(10s, EventLoopMode::On);
proc.runBlocking(10s);
return proc.result() == ProcessResult::FinishedWithSuccess;
}
@@ -631,7 +631,7 @@ bool checkCertificatePassword(const FilePath &keystorePath, const QString &keyst
Process proc;
proc.setCommand({androidConfig().keytoolPath(), arguments});
proc.runBlocking(10s, EventLoopMode::On);
proc.runBlocking(10s);
return proc.result() == ProcessResult::FinishedWithSuccess;
}
@@ -644,7 +644,7 @@ bool checkCertificateExists(const FilePath &keystorePath, const QString &keystor
Process proc;
proc.setCommand({androidConfig().keytoolPath(), arguments});
proc.runBlocking(10s, EventLoopMode::On);
proc.runBlocking(10s);
return proc.result() == ProcessResult::FinishedWithSuccess;
}

View File

@@ -308,7 +308,8 @@ static CMakeBuildTarget toBuildTarget(const TargetDetails &t,
std::optional<QString> dllName;
if (buildDir.osType() == OsTypeWindows && (f.role == "libraries")) {
part = FilePath::fromUserInput(part).fileName();
const auto partAsFilePath = FilePath::fromUserInput(part);
part = partAsFilePath.fileName();
// Skip object libraries on Windows. This case can happen with static qml plugins
if (part.endsWith(".obj") || part.endsWith(".o"))
@@ -322,12 +323,15 @@ static CMakeBuildTarget toBuildTarget(const TargetDetails &t,
}
// MinGW has libQt6Core.a -> Qt6Core.dll
// but libFoo.dll.a was already handled above
const QString mingwPrefix("lib");
const QString mingwSuffix(".a");
if (part.startsWith(mingwPrefix) && part.endsWith(mingwSuffix))
dllName = part.chopped(mingwSuffix.length())
const QString mingwSuffix("a");
const QString completeSuffix = partAsFilePath.completeSuffix();
if (part.startsWith(mingwPrefix) && completeSuffix == mingwSuffix) {
dllName = part.chopped(mingwSuffix.length() + 1/*the '.'*/)
.sliced(mingwPrefix.length())
.append(".dll");
}
}
if (!tmp.isEmpty() && tmp.isDir()) {

View File

@@ -30,7 +30,7 @@ using namespace Utils;
and \uicontrol {Files in File System} where the user provides a directory and file
patterns to search.
\image qtcreator-search-filesystem.png
\image qtcreator-search-reg-exp.webp {Search Results view with search criteria}
To make your find scope available to the user, you need to implement this
class, and register an instance of your subclass in the plugin manager.
@@ -38,7 +38,7 @@ using namespace Utils;
A common way to present the search results to the user, is to use the
shared \uicontrol{Search Results} pane.
\image qtcreator-search-results.webp {Search Results view}
\image qtcreator-search-results-reg-exp.webp {Search Results view with search results}
If you want to implement a find filter that is doing a file based text
search, you should use \l Core::BaseTextFind, which already implements all
@@ -178,13 +178,13 @@ using namespace Utils;
*/
/*!
\fn void Core::IFindFilter::writeSettings(QSettings *settings)
\fn void Core::IFindFilter::writeSettings(Utils::QtcSettings *settings)
Called at shutdown to write the state of the additional options
for this find filter to the \a settings.
*/
/*!
\fn void Core::IFindFilter::readSettings(QSettings *settings)
\fn void Core::IFindFilter::readSettings(Utils::QtcSettings *settings)
Called at startup to read the state of the additional options
for this find filter from the \a settings.
*/

View File

@@ -288,10 +288,13 @@ using namespace Core::Internal;
This enum type specifies whether the search results should be sorted or
ordered:
\value AddSorted
The search results are sorted.
\value AddSortedByContent
The search results are sorted alphabetically.
\value AddSortedByPosition
The search results are sorted by the search results' reported line
numbers.
\value AddOrdered
The search results are ordered.
The search results are ordered as they are reported.
*/
/*!
@@ -331,7 +334,7 @@ using namespace Core::Internal;
\brief The SearchResultWindow class is the implementation of a commonly
shared \uicontrol{Search Results} output pane.
\image qtcreator-search-results.webp {Search Results view}
\image qtcreator-search-results-reg-exp.webp {Search Results view with search results}
Whenever you want to show the user a list of search results, or want
to present UI for a global search and replace, use the single instance

View File

@@ -103,7 +103,7 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
Utils::writeIncludeFileDirective("QtGui/" + formBaseClass, true, headerStr);
headerStr << "#endif\n";
} else {
Utils::writeIncludeFileDirective("QtGui/" + formBaseClass, true, headerStr);
Utils::writeIncludeFileDirective("QtWidgets/" + formBaseClass, true, headerStr);
}
} else {
Utils::writeIncludeFileDirective(formBaseClass, true, headerStr);

View File

@@ -1512,7 +1512,8 @@ private:
const QString sshCmdLine = ProcessArgs::joinArgs(
QStringList{SshSettings::sshFilePath().toUserOutput()}
<< fullConnectionOptions(), OsTypeLinux);
QStringList options{"-e", sshCmdLine, m_setup.m_rsyncFlags};
QStringList options{"-e", sshCmdLine};
options << ProcessArgs::splitArgs(m_setup.m_rsyncFlags, HostOsInfo::hostOs());
if (!m_batches.isEmpty()) { // NormalRun
const auto batchIt = m_batches.begin();