widgets

package
v0.0.0-...-9beddec Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 2, 2019 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Red progressbar进度条背景色红色
	Red = "QProgressBar{text-align:center}QProgressBar::chunk{background:red}"
	// Green progressbar进度条背景色绿色
	Green = "QProgressBar{text-align:center}QProgressBar::chunk{background:green}"
)
View Source
const (
	// KB 流量单位,1kb
	KB = 1
	// MB 流量单位,1024kb
	MB = 1024 * KB
	// GB 1024mb
	GB = MB * 1024
	// HighRatio 流量使用量警告阀值
	HighRatio = 0.9
)

Variables

View Source
var CountryFlags = make([]map[string]string, 0)
View Source
var ErrCanceled = errors.New("QFileDialog canceled")

Functions

func ShowNotification

func ShowNotification(title, text, image string, delay time.Duration)

ShowNotification 显示org.freedesktop.Notifications气泡消息框 duration == -1时使用默认delay duration == 0表示不设置超时,desktop notification将会一直显示 出错信息输出到stderr,不进入log

Types

type AccountItem

type AccountItem struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

AccountItem 显示账户名和删除按钮,由QComboBox使用

func NewAccountItem2

func NewAccountItem2(user string) *AccountItem

func (*AccountItem) InitUI

func (item *AccountItem) InitUI()

type ChartsDialog

type ChartsDialog struct {
	widgets.QDialog
	// contains filtered or unexported fields
}

ChartsDialog 显示上传下载对比pie chart和使用趋势line charts

func NewChartsDialog2

func NewChartsDialog2(user, service string, logger *log.Logger, parent widgets.QWidget_ITF) *ChartsDialog

NewChartsDialog2 创建统计图表对话框,创建失败会将信息写入日志 对话框不能放大或拉伸,会导致charts无法正常显示

func (*ChartsDialog) CreateDownloadLineChart

func (dialog *ChartsDialog) CreateDownloadLineChart() *charts.QChartView

CreateDownloadLineChart 生成download流量使用情况趋势图

func (*ChartsDialog) CreatePieChart

func (dialog *ChartsDialog) CreatePieChart() *charts.QChartView

CreatePieChart 生成upload/download饼图

func (*ChartsDialog) CreateUploadLineChart

func (dialog *ChartsDialog) CreateUploadLineChart() *charts.QChartView

CreateUploadLineChart 生成upload流量使用情况趋势图

func (*ChartsDialog) InitUI

func (dialog *ChartsDialog) InitUI()

InitUI 生成图表并显示

type ClientConfigWidget

type ClientConfigWidget struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

schannel-qt5客户端配置控件

func NewClientConfigWidget2

func NewClientConfigWidget2(conf *config.UserConfig) *ClientConfigWidget

根据UserConfig创建ClientConfigWidget

func (*ClientConfigWidget) GetProxyUrl

func (cw *ClientConfigWidget) GetProxyUrl() string

GetProxyURL 返回拼接了type后的URL

func (*ClientConfigWidget) InitUI

func (cw *ClientConfigWidget) InitUI()

func (*ClientConfigWidget) UpdateClientConfig

func (cw *ClientConfigWidget) UpdateClientConfig() error

UpdateClientConfig 更新UserClient,传递的为UserConfig的引用,可以直接修改

type ColorLabel

type ColorLabel struct {
	widgets.QLabel
	// contains filtered or unexported fields
}

ColorLabel 使用QSS显示彩色文字

func NewColorLabelWithColor

func NewColorLabelWithColor(text, color string) *ColorLabel

NewColorLabelWithColor 生成colorlabel,设置default color为color color为空则设置为系统默认颜色 color可以是颜色对应的名字,例如"black", "green" 也可以是16进制的RGB值,例如 #ffffff, #ff08ff, #000000

func (*ColorLabel) ChangeColor

func (l *ColorLabel) ChangeColor(color string)

ChangeColor 改变现有text的颜色 并且设置defaultColor为新的颜色 color为""时设置为系统默认颜色

func (*ColorLabel) DropColor

func (l *ColorLabel) DropColor()

DropColor 去除自定义颜色,显示系统主题默认的颜色

func (*ColorLabel) SetColorText

func (l *ColorLabel) SetColorText(text, color string)

SetColorText 用color显示新的text color为""时显示系统默认颜色

func (*ColorLabel) SetDefaultColor

func (l *ColorLabel) SetDefaultColor(color string)

SetDefaultColor 设置defaultColor color为""时设置为系统颜色 不会改变现有text内容的颜色

func (*ColorLabel) SetDefaultColorText

func (l *ColorLabel) SetDefaultColorText(text string)

SetDefaultColorText 设置新的text值,并使其显示设置的default color

type ConfigWidget

type ConfigWidget struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

ConfigWidget 显示和设置本客户端的配置

func NewConfigWidget2

func NewConfigWidget2(conf *config.UserConfig) *ConfigWidget

NewConfigWidget2 根据conf生成ConfigWidget

func (*ConfigWidget) InitUI

func (w *ConfigWidget) InitUI()

InitUI 初始化并显示

func (*ConfigWidget) SaveConfig

func (w *ConfigWidget) SaveConfig()

saveConfig 验证并保存配置

func (*ConfigWidget) Saved

func (w *ConfigWidget) Saved() bool

Saved 获取配置是否已经保存

type HTTPDownloader

type HTTPDownloader struct {
	core.QObject
	// contains filtered or unexported fields
}

HTTPDownloader 通过HTTP下载文件 配合goroutine和QProgressBar/QProgressDialog使用

func NewHTTPDownloader2

func NewHTTPDownloader2(url, referer, proxy string,
	cookies []*http.Cookie) (*HTTPDownloader, error)

NewHTTPDownloader2 创建下载器 url为下载地址 file为保存的本地文件地址 referer为HTTP Header的Referer,可为空 proxy为代理,可设置为空 cookies用户身份凭证,可为空

func (*HTTPDownloader) Download

func (d *HTTPDownloader) Download(file string)

Download 下载文件,每下载一个chunk长度出发一次UpdateProgress信号 下载被取消时删除已下载的部分文件

func (*HTTPDownloader) TotalSize

func (d *HTTPDownloader) TotalSize() (int, error)

TotalSize 下载文件的总大小

type InvoiceDialog

type InvoiceDialog struct {
	widgets.QDialog
	// contains filtered or unexported fields
}

InvoiceDialog 显示全部的账单信息

func NewInvoiceDialogWithData

func NewInvoiceDialogWithData(bridge UserDataBridge, data []*parser.Invoice) *InvoiceDialog

NewInvoiceDialogWithData 生成dialog bridge用户获取登录信息

type InvoicePanel

type InvoicePanel struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

InvoicePanel 显示账单状态

func NewInvoicePanelWithData

func NewInvoicePanelWithData(bridge UserDataBridge) *InvoicePanel

NewInvoicePanelWithData 生成InvoicePanel

func (*InvoicePanel) UpdateInvoices

func (panel *InvoicePanel) UpdateInvoices(data []*parser.Invoice)

UpdateInvoices 刷新账单信息显示

type InvoiceViewWidget

type InvoiceViewWidget struct {
	widgets.QMainWindow
	// contains filtered or unexported fields
}

InvoiceViewWidget 使用QWebEngineView展示账单详情

func (*InvoiceViewWidget) SetHTML

func (i *InvoiceViewWidget) SetHTML(html string)

设置view展示的内容

type LoginIndicator

type LoginIndicator struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

login时显示正在登录的busy indicator

func NewLoginIndicator2

func NewLoginIndicator2() *LoginIndicator

func (*LoginIndicator) InitUI

func (i *LoginIndicator) InitUI()

type LoginWidget

type LoginWidget struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

LoginWidget 登录界面

func NewLoginWidget2

func NewLoginWidget2(conf *config.UserConfig, logger *log.Logger, db orm.Ormer) *LoginWidget

NewLoginWidget2 根据config,logger,db生成登录控件

func (*LoginWidget) InitUI

func (l *LoginWidget) InitUI()

type MainWidget

type MainWidget struct {
	widgets.QMainWindow
	// contains filtered or unexported fields
}

MainWidget 客户端主界面,并处理子widget信号

func NewMainWidget2

func NewMainWidget2(conf *config.UserConfig, logger *log.Logger, db orm.Ormer) *MainWidget

NewMainWidget2 创建主界面

func (*MainWidget) InitUI

func (m *MainWidget) InitUI()

InitUI 初始化UI 先初始化login,登录成功后login隐藏,再初始化summary和setting

type NodeDetailWidget

type NodeDetailWidget struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

NodeDetailWidget 显示节点的详细信息

func NewNodeDetailWidgetWithNode

func NewNodeDetailWidgetWithNode(node *parser.SSRNode) *NodeDetailWidget

NewNodeDetailWidgetWithNode 根据参数给出的节点显示其详细信息

func (*NodeDetailWidget) InitUI

func (n *NodeDetailWidget) InitUI()

InitUI 初始化UI

func (*NodeDetailWidget) SetNodeDetail

func (n *NodeDetailWidget) SetNodeDetail(node *parser.SSRNode)

SetNodeDetail 设置需要显示详细信息的节点

type NodeInfoPanel

type NodeInfoPanel struct {
	widgets.QGroupBox
	// contains filtered or unexported fields
}

NodeInfoPanel ssr节点简略信息面板 显示: 名字,ip,国家(根据节点名称得出)

func NewNodeInfoPanelWithNode

func NewNodeInfoPanelWithNode(node *parser.SSRNode) *NodeInfoPanel

NewNodeInfoPanelWithNode 根据node参数生成简略信息面板

func (*NodeInfoPanel) InitUI

func (n *NodeInfoPanel) InitUI()

InitUI 初始化UI

type NodeSelectDialog

type NodeSelectDialog struct {
	widgets.QDialog

	// 选择的节点,将作为结果被使用
	CurrentNode *parser.SSRNode
	// contains filtered or unexported fields
}

NodeSelectDialog 显示所有节点信息,并选择设置节点 需要使用模态运行

func NewNodeSelectDialog2

func NewNodeSelectDialog2(current *parser.SSRNode, nodes []*parser.SSRNode) *NodeSelectDialog

NewNodeSelectDialog2 生成node选择对话框

func (*NodeSelectDialog) InitUI

func (dialog *NodeSelectDialog) InitUI()

InitUI 初始化界面

type NodeTreeItem

type NodeTreeItem struct {
	core.QObject
	// contains filtered or unexported fields
}

NodeTreeItem 将节点保存成地区/名字的树形结构

func NewNodeTreeItem2

func NewNodeTreeItem2(name string) *NodeTreeItem

NewNodeTreeItem2 用name创建NodeTreeItem

func (*NodeTreeItem) AppendChild

func (n *NodeTreeItem) AppendChild(child *NodeTreeItem)

添加节点至当前节点的children

func (*NodeTreeItem) Child

func (n *NodeTreeItem) Child(row int) *NodeTreeItem

返回自己的直接子节点

func (*NodeTreeItem) ChildCount

func (n *NodeTreeItem) ChildCount() int

func (*NodeTreeItem) ColumnCount

func (n *NodeTreeItem) ColumnCount() int

func (*NodeTreeItem) Data

func (n *NodeTreeItem) Data() string

func (*NodeTreeItem) FindChild

func (n *NodeTreeItem) FindChild(name string) *NodeTreeItem

根据name查找当前tree的子节点(不进行递归查找)

func (*NodeTreeItem) LatestChild

func (n *NodeTreeItem) LatestChild(row int) *NodeTreeItem

LatestChild 返回末端节点 如果已经是末端节点则返回自己

func (*NodeTreeItem) Node

func (n *NodeTreeItem) Node() *parser.SSRNode

func (*NodeTreeItem) ParentItem

func (n *NodeTreeItem) ParentItem() *NodeTreeItem

func (*NodeTreeItem) Row

func (n *NodeTreeItem) Row() int

Row 返回当前节点在父节点的children中的索引

func (*NodeTreeItem) SetNode

func (n *NodeTreeItem) SetNode(node *parser.SSRNode)

type NodeTreeModel

type NodeTreeModel struct {
	core.QAbstractItemModel
	// contains filtered or unexported fields
}

NodeTreeModel 保存按地理信息分类的nodes

func NewNodeTreeModel2

func NewNodeTreeModel2(nodes []*parser.SSRNode) *NodeTreeModel

NewNodeTreeModel2 用nodes初始化model

func (*NodeTreeModel) FindNodeIndex

func (n *NodeTreeModel) FindNodeIndex(node *parser.SSRNode) *core.QModelIndex

FindNodeIndex 返回node所在的item的index

type ProgressBar

type ProgressBar struct {
	widgets.QProgressBar
	// contains filtered or unexported fields
}

func NewProgressBarWithMark

func NewProgressBarWithMark(max, current, mark int) *ProgressBar

NewProgressBarWithMaxium 返回progressbar 并且设置最小值为0,最大值为max 设置当前值为current 设置颜色变换标志位数值为mark

func (*ProgressBar) SetMark

func (p *ProgressBar) SetMark(mark int)

SetMark 更改highmark

type SSRConfigWidget

type SSRConfigWidget struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

设置ssr client

func NewSSRConfigWidget2

func NewSSRConfigWidget2(conf config.ClientConfig) *SSRConfigWidget

NewSSRConfigWidget2 创建ssr client config widget

func (*SSRConfigWidget) InitUI

func (s *SSRConfigWidget) InitUI()

InitUI 初始化界面

func (*SSRConfigWidget) UpdateSSRClientConfig

func (s *SSRConfigWidget) UpdateSSRClientConfig() error

UpdateSSRClientConfig 更新config,如果数据不合法则返回error 因为传递了引用类型,所以直接修改config对象

type SSRSwitchPanel

type SSRSwitchPanel struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

SSRSwitchPanel 显示简略信息,开关ssr

func NewSSRSwitchPanel2

func NewSSRSwitchPanel2(conf *config.UserConfig, nodes []*parser.SSRNode, logger *log.Logger) *SSRSwitchPanel

NewSSRSwitchPanel2 创建ssr开关面板组件

func (*SSRSwitchPanel) DataRefresh

func (s *SSRSwitchPanel) DataRefresh(conf *config.UserConfig, nodes []*parser.SSRNode)

DataRefresh 更新config和nodes

func (*SSRSwitchPanel) InitUI

func (s *SSRSwitchPanel) InitUI()

InitUI 初始化界面

func (*SSRSwitchPanel) SortNode

func (s *SSRSwitchPanel) SortNode()

SortNode 将节点排序,方便查找节点信息 按照NodeName排序

type SavePathRecorder

type SavePathRecorder struct {
	// contains filtered or unexported fields
}

SavePathRecorder 缓存用户上一次保存文件的目录,通过服务名称获取目录数据

func NewSavePathRecorder

func NewSavePathRecorder() *SavePathRecorder

func (*SavePathRecorder) LastSavePath

func (r *SavePathRecorder) LastSavePath(service string) (string, bool)

LastSavePath 根据service返回上次保存文件的目录,service不存在则返回false

func (*SavePathRecorder) SetLastSavePath

func (r *SavePathRecorder) SetLastSavePath(service, path string) error

SetLastSavePath 设置service上一次保存文件的目录 service不能为空

type ServicePanel

type ServicePanel struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

ServicePanel 显示服务信息

func NewServicePanel2

func NewServicePanel2(user string, info *parser.SSRInfo) *ServicePanel

NewServicePanel2 根据service生成服务信息面板

func (*ServicePanel) InitUI

func (panel *ServicePanel) InitUI(user string, info *parser.SSRInfo)

InitUI 初始化UI组件

func (*ServicePanel) UpadteInfo

func (panel *ServicePanel) UpadteInfo(user string, info *parser.SSRInfo)

UpdateInfo 更新panel信息

type ShadeWidget

type ShadeWidget struct {
	widgets.QWidget
}

ShadeWidget 半透明遮罩层

func NewShadeWidget2

func NewShadeWidget2(parent *widgets.QWidget) *ShadeWidget

NewShadeWidget2 返回parent的遮罩,将会遮住parent,Close后资源自动释放 创建后自动调用Show()

type SummarizedWidget

type SummarizedWidget struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

SummarizedWidget 综合服务信息显示,包括用户信息,服务信息

func NewSummarizedWidget2

func NewSummarizedWidget2(index int,
	user string,
	service *parser.Service,
	conf *config.UserConfig,
	dataBridge UserDataBridge) *SummarizedWidget

NewSummarizedWidget2 创建综合信息控件

func (*SummarizedWidget) InitUI

func (sw *SummarizedWidget) InitUI()

InitUI 初始化UI

func (*SummarizedWidget) SetService

func (sw *SummarizedWidget) SetService(service *parser.Service)

SetService 重新设置service,可用于更新数据 调用后一般需要出发DataRefresh信号

func (*SummarizedWidget) UpdateConfig

func (sw *SummarizedWidget) UpdateConfig(conf *config.UserConfig)

UpdateConfig 当config更新时刷新switchPanel 一般用作ConfigWidget的ConfigChanged信号处理函数

type SwitchButton

type SwitchButton struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

开关按钮,带有动画过度效果

func NewSwitchButton2

func NewSwitchButton2(checked bool) *SwitchButton

生成一个带有默认状态的SwitchButton

func (*SwitchButton) InitUI

func (s *SwitchButton) InitUI()

func (*SwitchButton) IsChecked

func (s *SwitchButton) IsChecked() bool

返回按钮是否处于打开状态

func (*SwitchButton) SetChecked

func (s *SwitchButton) SetChecked(checked bool)

设置SwitchButton的点击状态并启动动画效果

type TransparentButton

type TransparentButton struct {
	widgets.QPushButton
	// contains filtered or unexported fields
}

TransparentButton 透明按钮,当鼠标移动到按钮上时才会显示内容,否则处于透明状态

func NewTransparentButtonWithStyle

func NewTransparentButtonWithStyle(hoverStyle string) *TransparentButton

NewTransparentButtonWithStyle 创建带有hover style的透明按钮 style参数的格式详见SetHoverStyle

func (*TransparentButton) SetHoverStyle

func (tb *TransparentButton) SetHoverStyle(style string)

SetHoverStyle 设置按钮处于hover状态时的qss style的格式须为{attr1:value1;attr2:value2; ...}

type UsedPanel

type UsedPanel struct {
	widgets.QWidget
	// contains filtered or unexported fields
}

func NewUsedPanelWithInfo

func NewUsedPanelWithInfo(user string, info *parser.SSRInfo, logger *log.Logger) *UsedPanel

NewUsedPanelWithInfo 创建使用进度widget

func (*UsedPanel) InitUI

func (u *UsedPanel) InitUI()

InitUI 根据info初始化ui,并连接信号

type UserDataBridge

type UserDataBridge interface {
	sync.Locker
	// ServiceInfos 获取服务信息
	ServiceInfos() []*parser.Service
	// SSRInfos 根据service信息获取ssr使用和节点信息
	SSRInfos(ser *parser.Service) *parser.SSRInfo
	// Invoices 获取账单信息
	Invoices() []*parser.Invoice
	// GetLogger 获取logger
	GetLogger() *log.Logger
	// GetCookies 获取用户的cookie
	GetCookies() []*http.Cookie
	// GetProxy 获取代理地址
	GetProxy() string
}

UserDataBridge 传递用户数据到界面组件

func NewDataBridge

func NewDataBridge(cookies []*http.Cookie, proxy string, logger *log.Logger) UserDataBridge

NewDataBridge 生成用户数据接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL