Support for triggering Global Auto-Type from browser extension
This commit is contained in:
committed by
Jonathan White
parent
be6835e42f
commit
c7cdce6e33
@@ -164,11 +164,14 @@ void AutoType::loadPlugin(const QString& pluginPath)
|
||||
if (m_plugin) {
|
||||
if (m_plugin->isAvailable()) {
|
||||
m_executor = m_plugin->createExecutor();
|
||||
connect(osUtils, &OSUtilsBase::globalShortcutTriggered, this, [this](const QString& name) {
|
||||
if (name == "autotype") {
|
||||
startGlobalAutoType();
|
||||
}
|
||||
});
|
||||
connect(osUtils,
|
||||
&OSUtilsBase::globalShortcutTriggered,
|
||||
this,
|
||||
[this](const QString& name, const QString& initialSearch) {
|
||||
if (name == "autotype") {
|
||||
startGlobalAutoType(initialSearch);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
unloadPlugin();
|
||||
}
|
||||
@@ -359,7 +362,7 @@ void AutoType::performAutoTypeWithSequence(const Entry* entry, const QString& se
|
||||
executeAutoTypeActions(entry, hideWindow, sequence);
|
||||
}
|
||||
|
||||
void AutoType::startGlobalAutoType()
|
||||
void AutoType::startGlobalAutoType(const QString& search)
|
||||
{
|
||||
// Never Auto-Type into KeePassXC itself
|
||||
if (qApp->focusWindow()) {
|
||||
@@ -382,6 +385,7 @@ void AutoType::startGlobalAutoType()
|
||||
tr("KeePassXC requires the Accessibility and Screen Recorder permission in order to perform global "
|
||||
"Auto-Type. Screen Recording is necessary to use the window title to find entries. If you "
|
||||
"already granted permission, you may have to restart KeePassXC."));
|
||||
qDebug() << "Oh noes macOS.";
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -397,14 +401,14 @@ void AutoType::startGlobalAutoType()
|
||||
}
|
||||
#endif
|
||||
|
||||
emit globalAutoTypeTriggered();
|
||||
emit globalAutoTypeTriggered(search);
|
||||
}
|
||||
|
||||
/**
|
||||
* Global Autotype entry-point function
|
||||
* Perform global Auto-Type on the active window
|
||||
*/
|
||||
void AutoType::performGlobalAutoType(const QList<QSharedPointer<Database>>& dbList)
|
||||
void AutoType::performGlobalAutoType(const QList<QSharedPointer<Database>>& dbList, const QString& search)
|
||||
{
|
||||
if (!m_plugin) {
|
||||
return;
|
||||
@@ -449,6 +453,10 @@ void AutoType::performGlobalAutoType(const QList<QSharedPointer<Database>>& dbLi
|
||||
auto* selectDialog = new AutoTypeSelectDialog();
|
||||
selectDialog->setMatches(matchList, dbList);
|
||||
|
||||
if (!search.isEmpty()) {
|
||||
selectDialog->setSearchString(search);
|
||||
}
|
||||
|
||||
connect(getMainWindow(), &MainWindow::databaseLocked, selectDialog, &AutoTypeSelectDialog::reject);
|
||||
connect(selectDialog, &AutoTypeSelectDialog::matchActivated, this, [this](const AutoTypeMatch& match) {
|
||||
executeAutoTypeActions(match.first, nullptr, match.second, m_windowForGlobal);
|
||||
|
||||
@@ -52,16 +52,16 @@ public:
|
||||
static void createTestInstance();
|
||||
|
||||
public slots:
|
||||
void performGlobalAutoType(const QList<QSharedPointer<Database>>& dbList);
|
||||
void performGlobalAutoType(const QList<QSharedPointer<Database>>& dbList, const QString& search = {});
|
||||
void raiseWindow();
|
||||
|
||||
signals:
|
||||
void globalAutoTypeTriggered();
|
||||
void globalAutoTypeTriggered(const QString& search);
|
||||
void autotypePerformed();
|
||||
void autotypeRejected();
|
||||
|
||||
private slots:
|
||||
void startGlobalAutoType();
|
||||
void startGlobalAutoType(const QString& search);
|
||||
void unloadPlugin();
|
||||
|
||||
private:
|
||||
|
||||
@@ -102,6 +102,12 @@ void AutoTypeSelectDialog::setMatches(const QList<AutoTypeMatch>& matches, const
|
||||
m_ui->searchCheckBox->setChecked(m_matches.isEmpty());
|
||||
}
|
||||
|
||||
void AutoTypeSelectDialog::setSearchString(const QString& search)
|
||||
{
|
||||
m_ui->search->setText(search);
|
||||
m_ui->searchCheckBox->setChecked(true);
|
||||
}
|
||||
|
||||
void AutoTypeSelectDialog::submitAutoTypeMatch(AutoTypeMatch match)
|
||||
{
|
||||
if (match.first) {
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
~AutoTypeSelectDialog() override;
|
||||
|
||||
void setMatches(const QList<AutoTypeMatch>& matchList, const QList<QSharedPointer<Database>>& dbs);
|
||||
void setSearchString(const QString& search);
|
||||
|
||||
signals:
|
||||
void matchActivated(AutoTypeMatch match);
|
||||
|
||||
Reference in New Issue
Block a user