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); connectionListWidget->sortByColumn(MW_ITEM_COL_NAME, Qt::AscendingOrder);
for (auto i = 0; i < connectionListWidget->topLevelItemCount(); i++) 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(); on_locateBtn_clicked();
} }
@ -108,7 +110,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
setupUi(this); setupUi(this);
MainWindow::mwInstance = this; MainWindow::mwInstance = this;
QvMessageBusConnect(MainWindow); QvMessageBusConnect(MainWindow);
adjustSize();
// //
infoWidget = new ConnectionInfoWidget(this); infoWidget = new ConnectionInfoWidget(this);
connectionInfoLayout->addWidget(infoWidget); connectionInfoLayout->addWidget(infoWidget);
@ -258,7 +259,10 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
MWAddGroupItem_p(group); MWAddGroupItem_p(group);
auto connections = ConnectionManager->Connections(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 // 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) 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); groupNodes.remove(id);
} }

View File

@ -2,14 +2,6 @@
<ui version="4.0"> <ui version="4.0">
<class>MainWindow</class> <class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow"> <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"> <property name="minimumSize">
<size> <size>
<width>780</width> <width>780</width>
@ -51,12 +43,6 @@
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Maximum</enum> <enum>QSizePolicy::Maximum</enum>
</property> </property>
<property name="sizeHint" stdset="0">
<size>
<width>999999999</width>
<height>0</height>
</size>
</property>
</spacer> </spacer>
</item> </item>
</layout> </layout>

View File

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

View File

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

View File

@ -11,27 +11,19 @@ RouteSettingsMatrixWidget::RouteSettingsMatrixWidget(const QString &assetsDirPat
{ {
setupUi(this); 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 = new QMenu(this);
builtInSchemesMenu->addActions(this->getBuiltInSchemes()); builtInSchemesMenu->addActions(this->getBuiltInSchemes());
builtInSchemeBtn->setMenu(builtInSchemesMenu); builtInSchemeBtn->setMenu(builtInSchemesMenu);
// //
auto sourceStringsDomain = ReadGeoSiteFromFile(assetsDirPath + "/geosite.dat"); auto sourceStringsDomain = ReadGeoSiteFromFile(assetsDirPath + "/geosite.dat");
directDomainTxt->SetSourceStrings(sourceStringsDomain); directDomainTxt = new AutoCompleteTextEdit("geosite", sourceStringsDomain, this);
proxyDomainTxt->SetSourceStrings(sourceStringsDomain); proxyDomainTxt = new AutoCompleteTextEdit("geosite", sourceStringsDomain, this);
blockDomainTxt->SetSourceStrings(sourceStringsDomain); blockDomainTxt = new AutoCompleteTextEdit("geosite", sourceStringsDomain, this);
// //
auto sourceStringsIP = ReadGeoSiteFromFile(assetsDirPath + "/geoip.dat"); auto sourceStringsIP = ReadGeoSiteFromFile(assetsDirPath + "/geoip.dat");
directIPTxt->SetSourceStrings(sourceStringsIP); directIPTxt = new AutoCompleteTextEdit("geoip", sourceStringsIP, this);
proxyIPTxt->SetSourceStrings(sourceStringsIP); proxyIPTxt = new AutoCompleteTextEdit("geoip", sourceStringsIP, this);
blockIPTxt->SetSourceStrings(sourceStringsIP); blockIPTxt = new AutoCompleteTextEdit("geoip", sourceStringsIP, this);
// //
directTxtLayout->addWidget(directDomainTxt, 0, 0); directTxtLayout->addWidget(directDomainTxt, 0, 0);
proxyTxtLayout->addWidget(proxyDomainTxt, 0, 0); proxyTxtLayout->addWidget(proxyDomainTxt, 0, 0);
@ -306,9 +298,11 @@ void RouteSettingsMatrixWidget::on_importSchemeBtn_clicked()
this->SetRouteConfig(static_cast<Qv2rayRouteConfig>(scheme)); this->SetRouteConfig(static_cast<Qv2rayRouteConfig>(scheme));
// done // 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 // TODO: Give some error as Notification
} }
} }