Documentation ¶
Index ¶
- Constants
- Variables
- func ShowNotification(title, text, image string, delay time.Duration)
- type AccountItem
- type ChartsDialog
- type ClientConfigWidget
- type ColorLabel
- type ConfigWidget
- type HTTPDownloader
- type InvoiceDialog
- type InvoicePanel
- type InvoiceViewWidget
- type LoginIndicator
- type LoginWidget
- type MainWidget
- type NodeDetailWidget
- type NodeInfoPanel
- type NodeSelectDialog
- type NodeTreeItem
- func (n *NodeTreeItem) AppendChild(child *NodeTreeItem)
- func (n *NodeTreeItem) Child(row int) *NodeTreeItem
- func (n *NodeTreeItem) ChildCount() int
- func (n *NodeTreeItem) ColumnCount() int
- func (n *NodeTreeItem) Data() string
- func (n *NodeTreeItem) FindChild(name string) *NodeTreeItem
- func (n *NodeTreeItem) LatestChild(row int) *NodeTreeItem
- func (n *NodeTreeItem) Node() *parser.SSRNode
- func (n *NodeTreeItem) ParentItem() *NodeTreeItem
- func (n *NodeTreeItem) Row() int
- func (n *NodeTreeItem) SetNode(node *parser.SSRNode)
- type NodeTreeModel
- type ProgressBar
- type SSRConfigWidget
- type SSRSwitchPanel
- type SavePathRecorder
- type ServicePanel
- type ShadeWidget
- type SummarizedWidget
- type SwitchButton
- type TransparentButton
- type UsedPanel
- type UserDataBridge
Constants ¶
const ( // Red progressbar进度条背景色红色 Red = "QProgressBar{text-align:center}QProgressBar::chunk{background:red}" // Green progressbar进度条背景色绿色 Green = "QProgressBar{text-align:center}QProgressBar::chunk{background:green}" )
const ( // KB 流量单位,1kb KB = 1 // MB 流量单位,1024kb MB = 1024 * KB // GB 1024mb GB = MB * 1024 // HighRatio 流量使用量警告阀值 HighRatio = 0.9 )
Variables ¶
var CountryFlags = make([]map[string]string, 0)
var ErrCanceled = errors.New("QFileDialog canceled")
Functions ¶
func ShowNotification ¶
ShowNotification 显示org.freedesktop.Notifications气泡消息框 duration == -1时使用默认delay duration == 0表示不设置超时,desktop notification将会一直显示 出错信息输出到stderr,不进入log
Types ¶
type AccountItem ¶
AccountItem 显示账户名和删除按钮,由QComboBox使用
func NewAccountItem2 ¶
func NewAccountItem2(user string) *AccountItem
func (*AccountItem) InitUI ¶
func (item *AccountItem) InitUI()
type ChartsDialog ¶
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流量使用情况趋势图
type ClientConfigWidget ¶
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 ¶
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) 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 ¶
ConfigWidget 显示和设置本客户端的配置
func NewConfigWidget2 ¶
func NewConfigWidget2(conf *config.UserConfig) *ConfigWidget
NewConfigWidget2 根据conf生成ConfigWidget
type HTTPDownloader ¶
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 ¶
InvoiceDialog 显示全部的账单信息
func NewInvoiceDialogWithData ¶
func NewInvoiceDialogWithData(bridge UserDataBridge, data []*parser.Invoice) *InvoiceDialog
NewInvoiceDialogWithData 生成dialog bridge用户获取登录信息
type InvoicePanel ¶
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展示账单详情
type LoginIndicator ¶
login时显示正在登录的busy indicator
func NewLoginIndicator2 ¶
func NewLoginIndicator2() *LoginIndicator
func (*LoginIndicator) InitUI ¶
func (i *LoginIndicator) InitUI()
type LoginWidget ¶
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 ¶
NodeDetailWidget 显示节点的详细信息
func NewNodeDetailWidgetWithNode ¶
func NewNodeDetailWidgetWithNode(node *parser.SSRNode) *NodeDetailWidget
NewNodeDetailWidgetWithNode 根据参数给出的节点显示其详细信息
func (*NodeDetailWidget) SetNodeDetail ¶
func (n *NodeDetailWidget) SetNodeDetail(node *parser.SSRNode)
SetNodeDetail 设置需要显示详细信息的节点
type NodeInfoPanel ¶
NodeInfoPanel ssr节点简略信息面板 显示: 名字,ip,国家(根据节点名称得出)
func NewNodeInfoPanelWithNode ¶
func NewNodeInfoPanelWithNode(node *parser.SSRNode) *NodeInfoPanel
NewNodeInfoPanelWithNode 根据node参数生成简略信息面板
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选择对话框
type NodeTreeItem ¶
NodeTreeItem 将节点保存成地区/名字的树形结构
func NewNodeTreeItem2 ¶
func NewNodeTreeItem2(name string) *NodeTreeItem
NewNodeTreeItem2 用name创建NodeTreeItem
func (*NodeTreeItem) AppendChild ¶
func (n *NodeTreeItem) AppendChild(child *NodeTreeItem)
添加节点至当前节点的children
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) 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
type SSRConfigWidget ¶
设置ssr client
func NewSSRConfigWidget2 ¶
func NewSSRConfigWidget2(conf config.ClientConfig) *SSRConfigWidget
NewSSRConfigWidget2 创建ssr client config widget
func (*SSRConfigWidget) UpdateSSRClientConfig ¶
func (s *SSRConfigWidget) UpdateSSRClientConfig() error
UpdateSSRClientConfig 更新config,如果数据不合法则返回error 因为传递了引用类型,所以直接修改config对象
type SSRSwitchPanel ¶
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) 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 ¶
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 ¶
ShadeWidget 半透明遮罩层
func NewShadeWidget2 ¶
func NewShadeWidget2(parent *widgets.QWidget) *ShadeWidget
NewShadeWidget2 返回parent的遮罩,将会遮住parent,Close后资源自动释放 创建后自动调用Show()
type SummarizedWidget ¶
SummarizedWidget 综合服务信息显示,包括用户信息,服务信息
func NewSummarizedWidget2 ¶
func NewSummarizedWidget2(index int, user string, service *parser.Service, conf *config.UserConfig, dataBridge UserDataBridge) *SummarizedWidget
NewSummarizedWidget2 创建综合信息控件
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 ¶
开关按钮,带有动画过度效果
func (*SwitchButton) InitUI ¶
func (s *SwitchButton) InitUI()
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 ¶
func NewUsedPanelWithInfo ¶
NewUsedPanelWithInfo 创建使用进度widget
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 ¶
NewDataBridge 生成用户数据接口
Source Files ¶
- account_item.go
- charts_dialog.go
- client_config_widget.go
- color_label.go
- config_widget.go
- data_bridge.go
- downloader.go
- invoice_dialog.go
- invoice_panel.go
- invoice_view_widget.go
- login_indicator.go
- login_widget.go
- main_widget.go
- node_model.go
- notify.go
- progressbar.go
- savepath_recorder.go
- service_panel.go
- shade_widget.go
- ssr_node_detail_widget.go
- ssr_node_info_panel.go
- ssr_node_select_dialog.go
- ssr_switch_panel.go
- ssrclient_config_widget.go
- summarized_widget.go
- switch_button.go
- transparent_button.go
- used_panel.go
- utils.go
- widget_utils.go