This commit is contained in:
DuckSoft 2020-03-20 23:02:36 +08:00
commit 2a21b89f0c
No known key found for this signature in database
GPG Key ID: 7A3A9FA6E4FD4A8D
6 changed files with 26 additions and 79 deletions

View File

@ -1 +1 @@
4739
4741

View File

@ -99,7 +99,9 @@ void MainWindow::SortConnectionList(MW_ITEM_COL byCol, bool asending)
{
connectionListWidget->sortByColumn(MW_ITEM_COL_NAME, Qt::AscendingOrder);
for (auto i = 0; i < connectionListWidget->topLevelItemCount(); i++)
{ connectionListWidget->topLevelItem(i)->sortChildren(byCol, asending ? Qt::AscendingOrder : Qt::DescendingOrder); }
{
connectionListWidget->topLevelItem(i)->sortChildren(byCol, asending ? Qt::AscendingOrder : Qt::DescendingOrder);
}
on_locateBtn_clicked();
}
@ -108,7 +110,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
setupUi(this);
MainWindow::mwInstance = this;
QvMessageBusConnect(MainWindow);
adjustSize();
//
infoWidget = new ConnectionInfoWidget(this);
connectionInfoLayout->addWidget(infoWidget);
@ -258,7 +259,10 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
MWAddGroupItem_p(group);
auto connections = ConnectionManager->Connections(group);
for (auto connection : connections) { MWAddConnectionItem_p(connection, group); }
for (auto connection : connections)
{
MWAddConnectionItem_p(connection, group);
}
}
//
// Find and start if there is an auto-connection
@ -863,7 +867,10 @@ void MainWindow::OnGroupCreated(const GroupId &id, const QString &displayName)
}
void MainWindow::OnGroupDeleted(const GroupId &id, const QList<ConnectionId> &connections)
{
for (auto conn : connections) { groupNodes.value(id)->removeChild(connectionNodes.value(conn).get()); }
for (auto conn : connections)
{
groupNodes.value(id)->removeChild(connectionNodes.value(conn).get());
}
groupNodes.remove(id);
}

View File

@ -2,14 +2,6 @@
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>880</width>
<height>660</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>780</width>
@ -51,12 +43,6 @@
<property name="sizeType">
<enum>QSizePolicy::Maximum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>999999999</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>

View File

@ -62,56 +62,23 @@
namespace Qv2ray::ui::widgets
{
AutoCompleteTextEdit::AutoCompleteTextEdit(const QString &prefix, QWidget *parent) : QTextEdit(parent)
{
SetPrefix(prefix);
}
AutoCompleteTextEdit::~AutoCompleteTextEdit()
{
}
void AutoCompleteTextEdit::SetPrefix(const QString &prefix)
AutoCompleteTextEdit::AutoCompleteTextEdit(const QString &prefix, const QStringList &sourceStrings, QWidget *parent) : QTextEdit(parent)
{
this->prefix = prefix;
}
void AutoCompleteTextEdit::SetSourceStrings(QStringList sourceStrings)
{
auto x = new QCompleter(this);
auto model = new QStringListModel(sourceStrings);
x->setModel(model);
SetCompleter(x);
}
void AutoCompleteTextEdit::SetCompleter(QCompleter *completer)
{
if (c)
c->disconnect(this);
c = completer;
if (!c)
{
return;
}
c = new QCompleter(this);
c->setModel(new QStringListModel(sourceStrings, c));
c->setWidget(this);
c->setCompletionMode(QCompleter::PopupCompletion);
c->setCaseSensitivity(Qt::CaseInsensitive);
QObject::connect(c, QOverload<const QString &>::of(&QCompleter::activated), this, &AutoCompleteTextEdit::insertCompletion);
}
QCompleter *AutoCompleteTextEdit::completer() const
AutoCompleteTextEdit::~AutoCompleteTextEdit()
{
return c;
}
void AutoCompleteTextEdit::insertCompletion(const QString &completion)
{
if (c->widget() != this)
return;
QTextCursor tc = textCursor();
int extra = completion.length() - c->completionPrefix().length();
tc.movePosition(QTextCursor::Left);

View File

@ -62,14 +62,9 @@ namespace Qv2ray::ui::widgets
Q_OBJECT
public:
AutoCompleteTextEdit(const QString &prefix, QWidget *parent = nullptr);
AutoCompleteTextEdit(const QString &prefix, const QStringList &sourceStrings, QWidget *parent = nullptr);
~AutoCompleteTextEdit();
void SetPrefix(const QString &prefix);
void SetCompleter(QCompleter *c);
void SetSourceStrings(QStringList sourceStrings);
QCompleter *completer() const;
protected:
void keyPressEvent(QKeyEvent *e) override;
void focusInEvent(QFocusEvent *e) override;
@ -81,9 +76,7 @@ namespace Qv2ray::ui::widgets
QString lineUnderCursor() const;
QString wordUnderCursor() const;
private:
QString prefix;
QAbstractItemModel *modelFromStringList(const QStringList &list);
QCompleter *c = nullptr;
};
} // namespace Qv2ray::ui::widgets

View File

@ -11,27 +11,19 @@ RouteSettingsMatrixWidget::RouteSettingsMatrixWidget(const QString &assetsDirPat
{
setupUi(this);
//
directDomainTxt = new AutoCompleteTextEdit("geosite", this);
proxyDomainTxt = new AutoCompleteTextEdit("geosite", this);
blockDomainTxt = new AutoCompleteTextEdit("geosite", this);
//
directIPTxt = new AutoCompleteTextEdit("geoip", this);
proxyIPTxt = new AutoCompleteTextEdit("geoip", this);
blockIPTxt = new AutoCompleteTextEdit("geoip", this);
//
builtInSchemesMenu = new QMenu(this);
builtInSchemesMenu->addActions(this->getBuiltInSchemes());
builtInSchemeBtn->setMenu(builtInSchemesMenu);
//
auto sourceStringsDomain = ReadGeoSiteFromFile(assetsDirPath + "/geosite.dat");
directDomainTxt->SetSourceStrings(sourceStringsDomain);
proxyDomainTxt->SetSourceStrings(sourceStringsDomain);
blockDomainTxt->SetSourceStrings(sourceStringsDomain);
directDomainTxt = new AutoCompleteTextEdit("geosite", sourceStringsDomain, this);
proxyDomainTxt = new AutoCompleteTextEdit("geosite", sourceStringsDomain, this);
blockDomainTxt = new AutoCompleteTextEdit("geosite", sourceStringsDomain, this);
//
auto sourceStringsIP = ReadGeoSiteFromFile(assetsDirPath + "/geoip.dat");
directIPTxt->SetSourceStrings(sourceStringsIP);
proxyIPTxt->SetSourceStrings(sourceStringsIP);
blockIPTxt->SetSourceStrings(sourceStringsIP);
directIPTxt = new AutoCompleteTextEdit("geoip", sourceStringsIP, this);
proxyIPTxt = new AutoCompleteTextEdit("geoip", sourceStringsIP, this);
blockIPTxt = new AutoCompleteTextEdit("geoip", sourceStringsIP, this);
//
directTxtLayout->addWidget(directDomainTxt, 0, 0);
proxyTxtLayout->addWidget(proxyDomainTxt, 0, 0);
@ -306,9 +298,11 @@ void RouteSettingsMatrixWidget::on_importSchemeBtn_clicked()
this->SetRouteConfig(static_cast<Qv2rayRouteConfig>(scheme));
// done
LOG(MODULE_SETTINGS, "Imported route config: " + scheme.name + " by: " + scheme.author)
}
catch (exception)
catch (exception e)
{
LOG(MODULE_UI, "Exception: " + QString(e.what()))
// TODO: Give some error as Notification
}
}