Jump to content

Moving dots while installation


DigDeep
 Share

Recommended Posts

Thanks @UEZ

These examples look great. I like the _GDIPlus_LoadingSpinner.

I saw your last explanation of adding it into the part of the script, but for some reason I am not able to see how I can add it.

I already have a GUI screen and some texts running and wanted the LoadSpinner to go until the text is completed.

Also, I made some minor changes for the spinning color and size. But can you help me to make the background as white instead of black so that I can just get the spinning circle?

 

Thanks again :)

Link to comment
Share on other sites

Hi @UEZ

My code is too huge. But what I wanted is to add some kind of Progress which can run with or without Progressbar until the work is completed. Something with just 4-5 dots running from left to right or as circle and your _GDIPlus_LoadingSpinner is something which looks good here.

I am also adding your _GDIPlus_LoadingSpinner.au3 with few minor changes I have done to just get the think Blue circle. If the Black background can be changed to white with just the Blue circle going on would look perfect with my code.

Posting 2 Test codes here.

with Progress...

;~  ===>>> Download VLC
    $Lable1 = GUICtrlCreateLabel(@CRLF & @CRLF & 'Installing VLC Player...', 208, 112, 350, 102)
    GUICtrlSetFont(-1, 15, 400, 0, "Arial")
    $Size = GUICtrlCreateLabel("", 240, 238, 130, 17)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    $Percent = GUICtrlCreateLabel("", 432, 238, 100, 17)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    Local $Dwn = $URL ;Set URL
    $Sys = 'C:\Temp\vlc.exe'
    $Download = InetGet($Dwn, $Sys, 1, 1)
    $GetSize = InetGetSize($Dwn)

    Local $Progress = GUICtrlCreateProgress(240, 214, 294, 17)
    GUICtrlSetColor(-1, 32250)

    While Not InetGetInfo($Download, 2) ;Loop until download is finished
        Sleep(500) ;Sleep for half a second to avoid flicker in the progress bar
        $Bytes = InetGetInfo($Download, 0) ;Get bytes received
        $Percentage1 = Int($Bytes / $GetSize * 100) ;Calculate percentage
        $FullSize = $GetSize - $Bytes
        GUICtrlSetData($Progress, $Percentage1)
        GUICtrlSetData($Size, _GetDisplaySize($FullSize, $iPlaces = 2))
        GUICtrlSetData($Percent, $Percentage1)
    WEnd

    GUICtrlSetState($Lable1, $GUI_HIDE)
;~  ===>>> Download VLC

 

without progress

;~  ===>>> Install VLC
    $Lable2 = GUICtrlCreateLabel("Install VLC...", 208, 112, 350, 102)
    GUICtrlSetFont(-1, 15, 400, 0, "Arial")

    RunWait(@ComSpec & ' /c C:\Temp\vlc.exe', "", @SW_HIDE) ; Run MBSA Scan

    GUICtrlSetState($Lable2, $GUI_HIDE)
;~  ===>>> Install VLC

 

_GDIPlus_LoadingSpinner.au3

Edited by DigDeep
Link to comment
Share on other sites

You can do something like this here:

;coded by UEZ build 2014-02-08, idea taken from http://codepen.io/Fahrenheit/pen/Kbyxu
;AutoIt v3.3.9.21 or higher needed!
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

_GDIPlus_Startup()
Global Const $STM_SETIMAGE = 0x0172; $IMAGE_BITMAP = 0
Global $iW = 100, $iH = 100
Global Const $hGUI = GUICreate("", 1000, 500, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
Global Const $iPic = GUICtrlCreatePic("", 400, 300, $iW, $iH)
GUICtrlSetState(-1, $GUI_DISABLE)


;~  ===>>> Download VLC
    $URL = "http://mirror5.layerjet.com/videolan/vlc/2.2.4/win32/vlc-2.2.4-win32.exe"
    $Lable1 = GUICtrlCreateLabel(@CRLF & @CRLF & 'Installing VLC Player...', 208, 112, 350, 102)
    GUICtrlSetFont(-1, 15, 400, 0, "Arial")
    $Size = GUICtrlCreateLabel("", 240, 238, 130, 17)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    $Percent = GUICtrlCreateLabel("", 432, 238, 100, 17)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")

GUISetState()
Global $hHBmp_BG, $hB, $iPerc = 0, $iSleep = 30, $s = 0, $t, $m = 0
GUIRegisterMsg($WM_TIMER, "PlayAnim")
DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)

    Local $Dwn = $URL ;Set URL
    $Sys = 'C:\Temp\vlc.exe'
    $Download = InetGet($Dwn, $Sys, 1, 1)
    $GetSize = InetGetSize($Dwn)

    Local $Progress = GUICtrlCreateProgress(240, 214, 294, 17)
    GUICtrlSetColor(-1, 32250)

    While Not InetGetInfo($Download, 2) ;Loop until download is finished
        Sleep(500) ;Sleep for half a second to avoid flicker in the progress bar
        $Bytes = InetGetInfo($Download, 0) ;Get bytes received
        $Percentage1 = Int($Bytes / $GetSize * 100) ;Calculate percentage
        $FullSize = $GetSize - $Bytes
        GUICtrlSetData($Progress, $Percentage1)
;~         GUICtrlSetData($Size, _GetDisplaySize($FullSize, $iPlaces = 2))
        GUICtrlSetData($Percent, $Percentage1)
    WEnd

    GUICtrlSetState($Lable1, $GUI_HIDE)
;~  ===>>> Download VLC

ConsoleWrite("Done." & @CRLF)
GUIRegisterMsg($WM_TIMER, "")
GUICtrlSetState($iPic, $GUI_HIDE)


Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            GUIRegisterMsg($WM_TIMER, "")
            _WinAPI_DeleteObject($hHBmp_BG)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
    EndSwitch
Until False

Func PlayAnim()
    $hHBmp_BG = _GDIPlus_MultiColorLoader($iW, $iH, "")
    $hB = GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG)
    If $hB Then _WinAPI_DeleteObject($hB)
    _WinAPI_DeleteObject($hHBmp_BG)
EndFunc   ;==>PlayAnim


Func _GDIPlus_MultiColorLoader($iW, $iH, $sText = "", $sFont = "Arial", $bHBitmap = True, $iBGColor = 0xFFFFFFFF)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
    Local Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4 + (@OSBuild > 5999))
    _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3)
    _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
    _GDIPlus_GraphicsClear($hGfx, $iBGColor)

    Local $iRadius = ($iW > $iH) ? $iH * 0.6 : $iW * 0.6

    Local Const $hPath = _GDIPlus_PathCreate()
    _GDIPlus_PathAddEllipse($hPath, ($iW - ($iRadius + 24)) / 2, ($iH - ($iRadius + 24)) / 2, $iRadius + 24, $iRadius + 24)

    Local $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
    _GDIPlus_PathBrushSetCenterColor($hBrush, 0x000000)
    _GDIPlus_PathBrushSetSurroundColor($hBrush, 0x08101010)
    _GDIPlus_PathBrushSetGammaCorrection($hBrush, True)

    Local $aBlend[4][2] = [[3]]
    $aBlend[1][0] = 0 ;0% center color
    $aBlend[1][1] = 0 ;position = boundary
    $aBlend[2][0] = 0.33 ;70% center color
    $aBlend[2][1] = 0.1 ;10% of distance boundary->center point
    $aBlend[3][0] = 1 ;100% center color
    $aBlend[3][1] = 1 ;center point
    _GDIPlus_PathBrushSetBlend($hBrush, $aBlend)

    Local $aRect = _GDIPlus_PathBrushGetRect($hBrush)
    _GDIPlus_GraphicsFillRect($hGfx, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush)

    _GDIPlus_PathDispose($hPath)
    _GDIPlus_BrushDispose($hBrush)

    Local Const $hBrush_Black = _GDIPlus_BrushCreateSolid(0xFF161616)
    _GDIPlus_GraphicsFillEllipse($hGfx, ($iW - ($iRadius + 10)) / 2, ($iH - ($iRadius + 10)) / 2, $iRadius + 10, $iRadius + 10, $hBrush_Black)

    Local Const $hBitmap_Gradient = _GDIPlus_BitmapCreateFromScan0($iRadius, $iRadius)
    Local Const $hGfx_Gradient = _GDIPlus_ImageGetGraphicsContext($hBitmap_Gradient)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Gradient, 4 + (@OSBuild > 5999))
    Local Const $hMatrix = _GDIPlus_MatrixCreate()
    Local Static $r = 0
    _GDIPlus_MatrixTranslate($hMatrix, $iRadius / 2, $iRadius / 2)
    _GDIPlus_MatrixRotate($hMatrix, $r)
    _GDIPlus_MatrixTranslate($hMatrix, -$iRadius / 2, -$iRadius / 2)
    _GDIPlus_GraphicsSetTransform($hGfx_Gradient, $hMatrix)
    $r += 10
    Local Const $hBrush_Gradient = _GDIPlus_LineBrushCreate($iRadius, $iRadius / 2, $iRadius, $iRadius, 0xFF000000, 0xFF33CAFD, 1)
    _GDIPlus_LineBrushSetGammaCorrection($hBrush_Gradient)
    _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 0, 0, $iRadius, $iRadius, $hBrush_Gradient)
    _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 4, 4, $iRadius - 8, $iRadius - 8, $hBrush_Black)
    _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap_Gradient, ($iW - $iRadius) / 2, ($iH - $iRadius) / 2, $iRadius, $iRadius)
    _GDIPlus_BrushDispose($hBrush_Gradient)
    _GDIPlus_BrushDispose($hBrush_Black)
    _GDIPlus_GraphicsDispose($hGfx_Gradient)
    _GDIPlus_BitmapDispose($hBitmap_Gradient)
    _GDIPlus_MatrixDispose($hMatrix)

    Local Const $hFormat = _GDIPlus_StringFormatCreate()
    Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    Local Const $hFont = _GDIPlus_FontCreate($hFamily, $iRadius / 10)
    _GDIPlus_StringFormatSetAlign($hFormat, 1)
    _GDIPlus_StringFormatSetLineAlign($hFormat, 1)
    Local $tLayout = _GDIPlus_RectFCreate(0, 0, $iW, $iH)
    Local Static $iColor = 0x00, $iDir = 13
    Local $hBrush_txt = _GDIPlus_BrushCreateSolid(0xFF000000 + 0x010000 * $iColor + 0x0100 * $iColor + $iColor)
    _GDIPlus_GraphicsDrawStringEx($hGfx, $sText, $hFont, $tLayout, $hFormat, $hBrush_txt)
    $iColor += $iDir
    If $iColor > 0xFF Then
        $iColor = 0xFF
        $iDir *= -1
    ElseIf $iColor < 0x16 Then
        $iDir *= -1
        $iColor = 0x16
    EndIf
    _GDIPlus_BrushDispose($hBrush_txt)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_GraphicsDispose($hGfx)

    If $bHBitmap Then
        Local $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBITMAP
    EndIf
    Return $hBitmap
EndFunc

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

what if I have 4 sections in my code and I would need the rotating circle within each parts... Do I have to get all the above part before and after every section?

Part 1 - Action 1

Part 2 - Action 2

Part 3 - Action 3

Part 4 - Action 4

Link to comment
Share on other sites

Something like this here?

;coded by UEZ build 2014-02-08, idea taken from http://codepen.io/Fahrenheit/pen/Kbyxu
;AutoIt v3.3.9.21 or higher needed!
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

_GDIPlus_Startup()
Global Const $STM_SETIMAGE = 0x0172; $IMAGE_BITMAP = 0
Global $iW = 100, $iH = 100
Global Const $hGUI = GUICreate("", 1000, 500, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
Global Const $iPic1 = GUICtrlCreatePic("", 100, 300, $iW, $iH)
Global Const $iPic2 = GUICtrlCreatePic("", 400, 300, $iW, $iH)
Global Const $iPic3 = GUICtrlCreatePic("", 700, 300, $iW, $iH)
Global Const $iPic4 = GUICtrlCreatePic("", 400, 100, $iW, $iH)
GUICtrlSetState(-1, $GUI_DISABLE)


;~  ===>>> Download VLC
    $URL = "http://mirror5.layerjet.com/videolan/vlc/2.2.4/win32/vlc-2.2.4-win32.exe"
    $Lable1 = GUICtrlCreateLabel(@CRLF & @CRLF & 'Installing VLC Player...', 208, 112, 350, 102)
    GUICtrlSetFont(-1, 15, 400, 0, "Arial")
    $Size = GUICtrlCreateLabel("", 240, 238, 130, 17)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    $Percent = GUICtrlCreateLabel("", 432, 238, 100, 17)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")

GUISetState()
Global $hHBmp_BG, $hB, $iPerc = 0, $iSleep = 30, $s = 0, $t, $m = 0, $iPicCtrl

$iPicCtrl = $iPic1
GUIRegisterMsg($WM_TIMER, "PlayAnim")
DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)

    Local $Dwn = $URL ;Set URL
    $Sys = 'C:\Temp\vlc.exe'
    $Download = InetGet($Dwn, $Sys, 1, 1)
    $GetSize = InetGetSize($Dwn)

    Local $Progress = GUICtrlCreateProgress(240, 214, 294, 17)
    GUICtrlSetColor(-1, 32250)
    Sleep(3000)
    GUICtrlSetState($iPic1, $GUI_HIDE)
    $iPicCtrl = $iPic2
    Sleep(3000)
    GUICtrlSetState($iPic2, $GUI_HIDE)
    $iPicCtrl = $iPic3
    Sleep(3000)
    GUICtrlSetState($iPic3, $GUI_HIDE)
    $iPicCtrl = $iPic4
    Sleep(3000)
;~     While Not InetGetInfo($Download, 2) ;Loop until download is finished
;~         Sleep(500) ;Sleep for half a second to avoid flicker in the progress bar
;~         $Bytes = InetGetInfo($Download, 0) ;Get bytes received
;~         $Percentage1 = Int($Bytes / $GetSize * 100) ;Calculate percentage
;~         $FullSize = $GetSize - $Bytes
;~         GUICtrlSetData($Progress, $Percentage1)
;~         GUICtrlSetData($Size, _GetDisplaySize($FullSize, $iPlaces = 2))
;~         GUICtrlSetData($Percent, $Percentage1)
;~     WEnd
    GUICtrlSetState($iPic4, $GUI_HIDE)
    GUICtrlSetState($Lable1, $GUI_HIDE)
;~  ===>>> Download VLC

ConsoleWrite("Done." & @CRLF)
GUIRegisterMsg($WM_TIMER, "")


Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            GUIRegisterMsg($WM_TIMER, "")
            _WinAPI_DeleteObject($hHBmp_BG)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
    EndSwitch
Until False

Func PlayAnim()
    $hHBmp_BG = _GDIPlus_MultiColorLoader($iW, $iH, "")
    $hB = GUICtrlSendMsg($iPicCtrl, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG)
    If $hB Then _WinAPI_DeleteObject($hB)
    _WinAPI_DeleteObject($hHBmp_BG)
EndFunc   ;==>PlayAnim


Func _GDIPlus_MultiColorLoader($iW, $iH, $sText = "", $sFont = "Arial", $bHBitmap = True, $iBGColor = 0xFFFFFFFF)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
    Local Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4 + (@OSBuild > 5999))
    _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3)
    _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
    _GDIPlus_GraphicsClear($hGfx, $iBGColor)

    Local $iRadius = ($iW > $iH) ? $iH * 0.6 : $iW * 0.6

    Local Const $hPath = _GDIPlus_PathCreate()
    _GDIPlus_PathAddEllipse($hPath, ($iW - ($iRadius + 24)) / 2, ($iH - ($iRadius + 24)) / 2, $iRadius + 24, $iRadius + 24)

    Local $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
    _GDIPlus_PathBrushSetCenterColor($hBrush, 0x000000)
    _GDIPlus_PathBrushSetSurroundColor($hBrush, 0x08101010)
    _GDIPlus_PathBrushSetGammaCorrection($hBrush, True)

    Local $aBlend[4][2] = [[3]]
    $aBlend[1][0] = 0 ;0% center color
    $aBlend[1][1] = 0 ;position = boundary
    $aBlend[2][0] = 0.33 ;70% center color
    $aBlend[2][1] = 0.1 ;10% of distance boundary->center point
    $aBlend[3][0] = 1 ;100% center color
    $aBlend[3][1] = 1 ;center point
    _GDIPlus_PathBrushSetBlend($hBrush, $aBlend)

    Local $aRect = _GDIPlus_PathBrushGetRect($hBrush)
    _GDIPlus_GraphicsFillRect($hGfx, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush)

    _GDIPlus_PathDispose($hPath)
    _GDIPlus_BrushDispose($hBrush)

    Local Const $hBrush_Black = _GDIPlus_BrushCreateSolid(0xFF161616)
    _GDIPlus_GraphicsFillEllipse($hGfx, ($iW - ($iRadius + 10)) / 2, ($iH - ($iRadius + 10)) / 2, $iRadius + 10, $iRadius + 10, $hBrush_Black)

    Local Const $hBitmap_Gradient = _GDIPlus_BitmapCreateFromScan0($iRadius, $iRadius)
    Local Const $hGfx_Gradient = _GDIPlus_ImageGetGraphicsContext($hBitmap_Gradient)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Gradient, 4 + (@OSBuild > 5999))
    Local Const $hMatrix = _GDIPlus_MatrixCreate()
    Local Static $r = 0
    _GDIPlus_MatrixTranslate($hMatrix, $iRadius / 2, $iRadius / 2)
    _GDIPlus_MatrixRotate($hMatrix, $r)
    _GDIPlus_MatrixTranslate($hMatrix, -$iRadius / 2, -$iRadius / 2)
    _GDIPlus_GraphicsSetTransform($hGfx_Gradient, $hMatrix)
    $r += 10
    Local Const $hBrush_Gradient = _GDIPlus_LineBrushCreate($iRadius, $iRadius / 2, $iRadius, $iRadius, 0xFF000000, 0xFF33CAFD, 1)
    _GDIPlus_LineBrushSetGammaCorrection($hBrush_Gradient)
    _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 0, 0, $iRadius, $iRadius, $hBrush_Gradient)
    _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 4, 4, $iRadius - 8, $iRadius - 8, $hBrush_Black)
    _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap_Gradient, ($iW - $iRadius) / 2, ($iH - $iRadius) / 2, $iRadius, $iRadius)
    _GDIPlus_BrushDispose($hBrush_Gradient)
    _GDIPlus_BrushDispose($hBrush_Black)
    _GDIPlus_GraphicsDispose($hGfx_Gradient)
    _GDIPlus_BitmapDispose($hBitmap_Gradient)
    _GDIPlus_MatrixDispose($hMatrix)

    Local Const $hFormat = _GDIPlus_StringFormatCreate()
    Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont)
    Local Const $hFont = _GDIPlus_FontCreate($hFamily, $iRadius / 10)
    _GDIPlus_StringFormatSetAlign($hFormat, 1)
    _GDIPlus_StringFormatSetLineAlign($hFormat, 1)
    Local $tLayout = _GDIPlus_RectFCreate(0, 0, $iW, $iH)
    Local Static $iColor = 0x00, $iDir = 13
    Local $hBrush_txt = _GDIPlus_BrushCreateSolid(0xFF000000 + 0x010000 * $iColor + 0x0100 * $iColor + $iColor)
    _GDIPlus_GraphicsDrawStringEx($hGfx, $sText, $hFont, $tLayout, $hFormat, $hBrush_txt)
    $iColor += $iDir
    If $iColor > 0xFF Then
        $iColor = 0xFF
        $iDir *= -1
    ElseIf $iColor < 0x16 Then
        $iDir *= -1
        $iColor = 0x16
    EndIf
    _GDIPlus_BrushDispose($hBrush_txt)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_GraphicsDispose($hGfx)

    If $bHBitmap Then
        Local $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBITMAP
    EndIf
    Return $hBitmap
EndFunc

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...