VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "cConfig" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Objeto responsável por tratar as configurações ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Guarda o nome do objeto Private Const ST_MY_NAME As String = "cConfig" ' Nome do arquivo de config Private Const ST_CONFIG_FILENAME As String = "config.ini" ' Seção padrão no ini Private Const ST_DEFAULT_SECTION As String = "lyrik" ' Fonte Private Const ST_cnfnUnderlineTitle As String = "font_UnderlineTitle" Private Const ST_cnfnItalic As String = "font_Italic" Private Const ST_cnfnName As String = "font_Name" Private Const ST_cnfnSize As String = "font_Size" Private Const ST_cnfnStrikethru As String = "font_Strikethru" Private Const ST_cnfnUnderline As String = "font_Underline" Private Const ST_cnfnWeight As String = "font_Weight" Private Const ST_cnfnHeigth As String = "font_Heigth" Private Const ST_cnfnCharset As String = "font_Charset" ' Texto Private Const ST_txAlignment As String = "text_alignment" ' Cores Private Const ST_cncBackround As String = "color_Backround" Private Const ST_cncBackText As String = "color_BackText" Private Const ST_cncNormalText As String = "color_NormalText" Private Const ST_cncHighlighText As String = "color_HighlighText" ' Efeitos Private Const ST_cneAlpha As String = "effect_Alpha" Private Const ST_cneAlwaysOnTop As String = "effect_AlwaysOnTop" ' Timers de exibição Private Const ST_cntmrPictureRefresh As String = "timer_PictureRefresh" Private Const ST_cntmrTrackPosRefresh As String = "timer_TrackPosRefresh" Private Const ST_cntmrPlayerStateRefresh As String = "timer_PlayerStateRefresh" ' Tamanhos & posições Private Const ST_cnsWinWidth As String = "size_WinWidth" Private Const ST_cnsWinHeight As String = "size_WinHeight" Private Const ST_cnsWinTop As String = "pos_WinTop" Private Const ST_cnsWinLeft As String = "pos_WinLeft" ' Tamanhos & posições da tela de edição Private Const ST_cnsEditWinWidth As String = "size_EditWinWidth" Private Const ST_cnsEditWinHeight As String = "size_EditWinHeight" Private Const ST_cnsEditWinTop As String = "pos_EditWinTop" Private Const ST_cnsEditWinLeft As String = "pos_EditWinLeft" ' Auto implode Private Const ST_cnsEditAutoImplode As String = "edt_AutoImplode" ' Attachment Private Const ST_plyAttach As String = "ply_Attach" ' Linguagem Private Const ST_cnlLanguage As String = "language_name" ' Tipo de janela Private Const ST_cnwType As String = "window_mode" ' Tray Private Const ST_cntBorder As String = "tray_Border" Private Const ST_cntRefresh As String = "tray_Refresh" Private Const ST_cntFastRefresh As String = "tray_FastRefresh" Private Const ST_cntMaxTraySize As String = "tray_MaxTraySize" ' Conexão Private Const ST_prxHost As String = "proxy_Host" Private Const ST_prxPort As String = "proxy_Port" Private Const ST_prxUse As String = "proxy_Enabled" Private Const ST_conServer As String = "conn_Server" ' Cache Private Const ST_chcSize As String = "cache_size" Private Const ST_chcType As String = "cache_simple" ' Plugin Private Const ST_pluginAutoStart As String = "plugin_AutoStart" ' Primeira vez modo edição Private Const ST_editModeSplash As String = "editmode_splash" ' Último aviso de atualização Private Const ST_lastVersionShow As String = "version_LastShow" ' Valores padrões Private Const LN_DefaultTrayWidth As Long = 4800 Private Const LN_DefaultTrayHeight As Long = 1600 Private Const ST_DefaultLyrikServer As String = "www.lyrikproject.net" ' Objeto de acesso ao INI Private i_Ini As cIni ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Ao iniciar/fechar a classe ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub Class_Initialize() ' Inicia objeto Set i_Ini = New cIni ' Define o endereço do arquivo de configuração i_Ini.File = getSpecialFolder(efConfig) + ST_CONFIG_FILENAME ' Seta seção i_Ini.Section = ST_DEFAULT_SECTION End Sub Private Sub Class_Terminate() ' Libera objeto de acesso ao INI Set i_Ini = Nothing End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Propriedade de primeira edição de Lyrik ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Property Get editModeSplash() As Boolean Dim stAux As String ' Pesquisa no .ini stAux = i_Ini.ReadIni(ST_editModeSplash, ST_TRUE) ' Retorna editModeSplash = charTObool(stAux) End Property Public Property Let editModeSplash(blValue As Boolean) ' Grava i_Ini.WriteIni ST_editModeSplash, boolTOchar(blValue) End Property ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Propriedade de aviso de última versão disponível ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Property Get lastUpdateVersion() As Long Dim stAux As String ' Pesquisa no .ini stAux = i_Ini.ReadIni(ST_lastVersionShow, "0") ' Retorna lastUpdateVersion = CLng(stAux) End Property Public Property Let lastUpdateVersion(lnValue As Long) ' Grava i_Ini.WriteIni ST_lastVersionShow, CStr(lnValue) End Property ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Carrega todas as configurações ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub Load(Optional blBasic As Boolean = False) Dim twAux As TRAY_WINDOW On Error Resume Next ' Language st_LanguageFile = st_WorkDir + i_Ini.ReadIni(ST_cnlLanguage, "enus") + ".ini" ' Atualiza alinhamento da linguagem RefreshLanguageAlignment ' Verifica se não é para carregar somente o básico If Not blBasic Then ' Conexão st_LyrikServer = i_Ini.ReadIni(ST_conServer, ST_DefaultLyrikServer) st_ProxyHost = i_Ini.ReadIni(ST_prxHost, ST_INVALID_VALUE) ln_ProxyPort = CLng(i_Ini.ReadIni(ST_prxPort, "80")) bl_ProxyUse = charTObool(i_Ini.ReadIni(ST_prxUse, ST_FALSE)) ' Fonte fn_UnderlineTitle = charTObool(i_Ini.ReadIni(ST_cnfnUnderlineTitle, ST_TRUE)) fn_Italic = charTObool(i_Ini.ReadIni(ST_cnfnItalic, ST_FALSE)) fn_Name = i_Ini.ReadIni(ST_cnfnName, "Arial") fn_Size = CLng(i_Ini.ReadIni(ST_cnfnSize, "9")) fn_Strikethru = charTObool(i_Ini.ReadIni(ST_cnfnStrikethru, ST_FALSE)) fn_Underline = charTObool(i_Ini.ReadIni(ST_cnfnUnderline, ST_FALSE)) fn_Weight = CLng(i_Ini.ReadIni(ST_cnfnWeight, "700")) fn_Heigth = CLng(i_Ini.ReadIni(ST_cnfnHeigth, "0")) fn_Charset = CByte(i_Ini.ReadIni(ST_cnfnCharset, "0")) ' Texto ta_TextAlignment = CLng(i_Ini.ReadIni(ST_txAlignment, TEXT_ALIGNMENT.taCenter)) ' Cores SetColor cBackround, CLng(i_Ini.ReadIni(ST_cncBackround, "14376228")) SetColor cBackText, CLng(i_Ini.ReadIni(ST_cncBackText, "15570707")) SetColor cNormalText, CLng(i_Ini.ReadIni(ST_cncNormalText, "16239148")) SetColor cHighlighText, CLng(i_Ini.ReadIni(ST_cncHighlighText, "16643024")) ' Tray ln_TrayBorder = CLng(i_Ini.ReadIni(ST_cntBorder, "12")) ln_TrayRefresh = CLng(i_Ini.ReadIni(ST_cntRefresh, "200")) ln_FastTrayRefresh = CLng(i_Ini.ReadIni(ST_cntFastRefresh, "15")) it_MaxTraySize = CInt(i_Ini.ReadIni(ST_cntMaxTraySize, "160")) ' Efeitos bt_TrayAlpha = CByte(i_Ini.ReadIni(ST_cneAlpha, "220")) bl_AlwaysOnTop = charTObool(i_Ini.ReadIni(ST_cneAlwaysOnTop, ST_TRUE)) ' Timers ln_PicturePosRefresh = CLng(i_Ini.ReadIni(ST_cntmrPictureRefresh, "25")) ln_TrackPosRefresh = CLng(i_Ini.ReadIni(ST_cntmrTrackPosRefresh, "20")) ln_PlayerStateRefresh = CLng(i_Ini.ReadIni(ST_cntmrPlayerStateRefresh, "5000")) ' Tamanho e posições do window rt_Win.Top = CLng(i_Ini.ReadIni(ST_cnsWinTop, CStr((Screen.Height - LN_DefaultTrayHeight) / 2))) rt_Win.Left = CLng(i_Ini.ReadIni(ST_cnsWinLeft, CStr((Screen.Width - LN_DefaultTrayWidth) / 2))) rt_Win.Width = CLng(i_Ini.ReadIni(ST_cnsWinWidth, CStr(LN_DefaultTrayWidth))) rt_Win.Height = CLng(i_Ini.ReadIni(ST_cnsWinHeight, CStr(LN_DefaultTrayHeight))) ' Tamanho e posições do window de edição rt_EditWin.Top = CLng(i_Ini.ReadIni(ST_cnsEditWinTop, CStr((Screen.Height - 6855) / 2))) rt_EditWin.Left = CLng(i_Ini.ReadIni(ST_cnsEditWinLeft, CStr((Screen.Width - 8535) / 2))) rt_EditWin.Width = CLng(i_Ini.ReadIni(ST_cnsEditWinWidth, "8535")) rt_EditWin.Height = CLng(i_Ini.ReadIni(ST_cnsEditWinHeight, "6855")) ' Auto implode bl_AutoImplode = charTObool(i_Ini.ReadIni(ST_cnsEditAutoImplode, ST_FALSE)) ' Attchment bl_PlayerUseAttach = charTObool(i_Ini.ReadIni(ST_plyAttach, ST_TRUE)) ' AutoStart bl_AutoStart = charTObool(i_Ini.ReadIni(ST_pluginAutoStart, ST_TRUE)) ' Tipo de janela twAux = CInt(i_Ini.ReadIni(ST_cnwType, CStr(TRAY_WINDOW.twFree))) ' Última atualização avisada ln_LastVersionShow = CLng(i_Ini.ReadIni(ST_lastVersionShow, "0")) ' Verifica se o tipo é válido If ((twAux = twFree) Or (twAux = twTray)) Then ' Seta o tipo de janela rt_Win.Type = twAux Else ' Seta tipo window rt_Win.Type = twFree End If ' Se estiver usando proxy If bl_ProxyUse Then ' Se não foi informado um proxy e/ou informado uma porta inválida If (Len(st_ProxyHost) = 0) Or (ln_ProxyPort <= 0) Or (ln_ProxyPort > 65535) Then ' Desativa uso do proxy bl_ProxyUse = False End If End If ' Tamanho do cache ln_CacheSize = CLng(i_Ini.ReadIni(ST_chcSize, "1024")) ' Tipo de cache bl_SimpleCache = charTObool(i_Ini.ReadIni(ST_chcType, ST_TRUE)) End If End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Salva configurações ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub Save(Optional blBasic As Boolean = True) Dim lnAux(1) As Long On Error Resume Next ' Verifica o que deve ser salvo Select Case blBasic ' Se for para salvar somente o básico Case True ' Posição da janela window i_Ini.WriteIni ST_cnsWinTop, CStr(rt_Win.Top) i_Ini.WriteIni ST_cnsWinLeft, CStr(rt_Win.Left) i_Ini.WriteIni ST_cnsWinWidth, CStr(rt_Win.Width) i_Ini.WriteIni ST_cnsWinHeight, CStr(rt_Win.Height) ' Posição da janela window de edição i_Ini.WriteIni ST_cnsEditWinTop, CStr(rt_EditWin.Top) i_Ini.WriteIni ST_cnsEditWinLeft, CStr(rt_EditWin.Left) i_Ini.WriteIni ST_cnsEditWinWidth, CStr(rt_EditWin.Width) i_Ini.WriteIni ST_cnsEditWinHeight, CStr(rt_EditWin.Height) ' Auto implode i_Ini.WriteIni ST_cnsEditAutoImplode, boolTOchar(bl_AutoImplode) ' Tipo de janela If (rt_Win.Type = twFree) Or (rt_Win.Type = twTray) Then i_Ini.WriteIni ST_cnwType, CStr(rt_Win.Type) End If ' Efeitos i_Ini.WriteIni ST_cneAlwaysOnTop, boolTOchar(bl_AlwaysOnTop) ' Attachment i_Ini.WriteIni ST_plyAttach, boolTOchar(bl_PlayerUseAttach) ' Se for para salvar o restante Case False ' Conexão i_Ini.WriteIni ST_conServer, st_LyrikServer i_Ini.WriteIni ST_prxHost, st_ProxyHost i_Ini.WriteIni ST_prxPort, CStr(ln_ProxyPort) i_Ini.WriteIni ST_prxUse, boolTOchar(bl_ProxyUse) ' fonte i_Ini.WriteIni ST_cnfnUnderlineTitle, boolTOchar(fn_UnderlineTitle) i_Ini.WriteIni ST_cnfnItalic, boolTOchar(fn_Italic) i_Ini.WriteIni ST_cnfnName, fn_Name i_Ini.WriteIni ST_cnfnSize, CStr(fn_Size) i_Ini.WriteIni ST_cnfnStrikethru, boolTOchar(fn_Strikethru) i_Ini.WriteIni ST_cnfnUnderline, boolTOchar(fn_Underline) i_Ini.WriteIni ST_cnfnWeight, CStr(fn_Weight) i_Ini.WriteIni ST_cnfnHeigth, CStr(fn_Heigth) i_Ini.WriteIni ST_cnfnCharset, CStr(fn_Charset) ' texto i_Ini.WriteIni ST_txAlignment, CStr(ta_TextAlignment) ' Cores i_Ini.WriteIni ST_cncBackround, CStr(GetColor(cBackround)) i_Ini.WriteIni ST_cncBackText, CStr(GetColor(cBackText)) i_Ini.WriteIni ST_cncNormalText, CStr(GetColor(cNormalText)) i_Ini.WriteIni ST_cncHighlighText, CStr(GetColor(cHighlighText)) ' Tray i_Ini.WriteIni ST_cntBorder, CStr(ln_TrayBorder) i_Ini.WriteIni ST_cntRefresh, CStr(ln_TrayRefresh) i_Ini.WriteIni ST_cntFastRefresh, CStr(ln_FastTrayRefresh) i_Ini.WriteIni ST_cntMaxTraySize, CStr(it_MaxTraySize) ' Efeitos i_Ini.WriteIni ST_cneAlpha, CStr(bt_TrayAlpha) ' Timers i_Ini.WriteIni ST_cntmrPictureRefresh, CStr(ln_PicturePosRefresh) i_Ini.WriteIni ST_cntmrTrackPosRefresh, CStr(ln_TrackPosRefresh) i_Ini.WriteIni ST_cntmrPlayerStateRefresh, CStr(ln_PlayerStateRefresh) ' Recupera qual a linguagem escolhida lnAux(0) = InStrRev(st_LanguageFile, ST_PATH_SEP) lnAux(1) = InStrRev(st_LanguageFile, ST_EXTENCION_DOT) ' Se encontrou If ((lnAux(0) > 0) And (lnAux(1) > lnAux(0))) Then ' Salva linguagem i_Ini.WriteIni ST_cnlLanguage, Mid(st_LanguageFile, lnAux(0) + 1, lnAux(1) - lnAux(0) - 1) ' Atualiza alinhamento da linguagem RefreshLanguageAlignment End If ' Cache i_Ini.WriteIni ST_chcSize, CStr(ln_CacheSize) ' Tipo de cache i_Ini.WriteIni ST_chcType, boolTOchar(bl_SimpleCache) ' AutoStart i_Ini.WriteIni ST_pluginAutoStart, boolTOchar(bl_AutoStart) End Select End Sub