⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updatevlc.cpp

📁 uclinux 下的vlc播放器源代码
💻 CPP
字号:
/***************************************************************************** * updatevlc.cpp : VLC Update checker ***************************************************************************** * Copyright (C) 2000-2004 the VideoLAN team * $Id: updatevlc.cpp 18107 2006-11-27 13:44:11Z md $ * * Authors: Antoine Cellerier <dionoea@videolan.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#include "updatevlc.hpp"#include <wx/imaglist.h>#include "bitmaps/update_ascii.xpm"#include "bitmaps/update_binary.xpm"#include "bitmaps/update_document.xpm"#include "bitmaps/update_info.xpm"#include "bitmaps/update_source.xpm"/***************************************************************************** * Event Table. *****************************************************************************//* IDs for the controls and the menu commands */enum{    Close_Event,    CheckForUpdate_Event,    ChooseItem_Event};BEGIN_EVENT_TABLE(UpdateVLC, wxFrame)    /* Button events */    EVT_BUTTON(wxID_OK, UpdateVLC::OnButtonClose)    EVT_BUTTON(CheckForUpdate_Event, UpdateVLC::OnCheckForUpdate)    /* CtrlList events */    EVT_LIST_ITEM_ACTIVATED( ChooseItem_Event, UpdateVLC::OnChooseItem )    /* Hide the window when the user closes the window */    EVT_CLOSE(UpdateVLC::OnClose)END_EVENT_TABLE()/***************************************************************************** * Constructor. *****************************************************************************/UpdateVLC::UpdateVLC( intf_thread_t *_p_intf, wxWindow *p_parent ):    wxFrame( p_parent, -1, wxU(_("Updates")),             wxDefaultPosition, wxDefaultSize,             wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT             |wxFRAME_TOOL_WINDOW|wxCAPTION ){    /* Initializations */    p_intf = _p_intf;    SetIcon( *p_intf->p_sys->p_icon );    SetAutoLayout( TRUE );    wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );    wxButton *update_button =        new wxButton( this, CheckForUpdate_Event,                      wxU(_("Check for updates")) );    main_sizer->Add( update_button );    SetSizerAndFit( main_sizer );    p_u = update_New( p_intf );}UpdateVLC::~UpdateVLC(){    update_Delete( p_u );}void UpdateVLC::OnButtonClose( wxCommandEvent& event ){    wxCloseEvent cevent;    OnClose(cevent);}void UpdateVLC::OnClose( wxCloseEvent& WXUNUSED(event) ){    Hide();}void UpdateVLC::OnCheckForUpdate( wxCommandEvent& event ){    update_Check( p_u, VLC_FALSE );    update_iterator_t *p_uit = update_iterator_New( p_u );    if( p_uit )    {        wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );        p_uit->i_rs = UPDATE_RELEASE_STATUS_NEWER;        p_uit->i_t = UPDATE_FILE_TYPE_ALL;        update_iterator_Action( p_uit, UPDATE_MIRROR );        DestroyChildren();        wxListCtrl *list =            new wxListCtrl( this, ChooseItem_Event,                            wxDefaultPosition, wxSize( 400, 300 ),                            wxLC_SINGLE_SEL|wxLC_LIST );        wxImageList *images = new wxImageList( 32, 32, TRUE );        images->Add( wxIcon( update_ascii_xpm ) );        images->Add( wxIcon( update_info_xpm ) );        images->Add( wxIcon( update_source_xpm ) );        images->Add( wxIcon( update_binary_xpm ) );        images->Add( wxIcon( update_document_xpm ) );        list->AssignImageList( images, wxIMAGE_LIST_SMALL );        while( update_iterator_Action( p_uit, UPDATE_FILE ) != UPDATE_FAIL )        {            int i_image;            switch( p_uit->file.i_type )            {                case UPDATE_FILE_TYPE_INFO:                    i_image = 1;                    break;                case UPDATE_FILE_TYPE_SOURCE:                    i_image = 2;                    break;                case UPDATE_FILE_TYPE_BINARY:                    i_image = 3;                    break;                case UPDATE_FILE_TYPE_PLUGIN:                    i_image = 4;                    break;                default:                    i_image = 0;            }            char *psz_tmp = NULL;            if( p_uit->file.l_size )            {                if( p_uit->file.l_size > 1024 * 1024 * 1024 )                     asprintf( &psz_tmp, "(%ld GB)",                                p_uit->file.l_size / (1024*1024*1024) );                if( p_uit->file.l_size > 1024 * 1024 )                    asprintf( &psz_tmp, "(%ld MB)",                                p_uit->file.l_size / (1024*1024) );                else if( p_uit->file.l_size > 1024 )                    asprintf( &psz_tmp, "(%ld kB)",                                p_uit->file.l_size / 1024 );                else                    asprintf( &psz_tmp, "(%ld B)", p_uit->file.l_size );            }            list->InsertItem( list->GetItemCount(),                              wxU(p_uit->file.psz_description)+wxU("\n")                              + wxU(p_uit->release.psz_version)+wxU(" ")                              + wxU(psz_tmp),                              i_image );            if( psz_tmp ) free( psz_tmp );        }        main_sizer->Add( new wxStaticText( this, -1, wxU( _("\nAvailable "                 "updates and related downloads.\n"                "(Double click on a file to download it)\n" ) ) ) );        main_sizer->Add( list );        SetSizerAndFit( main_sizer );        Layout();        update_iterator_Delete( p_uit );    }}void UpdateVLC::OnChooseItem( wxListEvent& event ){    update_iterator_t *p_uit = update_iterator_New( p_u );    if( p_uit )    {        p_uit->i_rs = UPDATE_RELEASE_STATUS_NEWER;        p_uit->i_t = UPDATE_FILE_TYPE_ALL;        update_iterator_Action( p_uit, UPDATE_MIRROR );        int i_count = 0;        while( update_iterator_Action( p_uit, UPDATE_FILE ) != UPDATE_FAIL )        {            if( i_count == event.GetIndex() )                break;            i_count++;        }        wxString url = wxU( p_uit->file.psz_url );        wxFileDialog *filedialog =                    new wxFileDialog( this, wxU(_("Save file...")),                        wxT(""), url.AfterLast( '/' ), wxT("*.*"),                        wxSAVE | wxOVERWRITE_PROMPT );        if( filedialog->ShowModal() == wxID_OK )        {            update_download( p_uit, filedialog->GetPath().mb_str(wxConvUTF8) );        }        update_iterator_Delete( p_uit );        delete filedialog;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -