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

📄 tasklist.cpp

📁 一款LINUX下的下载软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        item.SetImage( 1 );
        break;

        case _STATUS_WAITING:
        item.SetImage( 2 );  //等待运行的图标暂时用这个
        break;

        case _STATUS_PAUSE:
        item.SetImage( 3 );
        break;

        case _STATUS_WRONG:
        item.SetImage( 4 );
        break;

        case _STATUS_FINISH:

        case _STATUS_FINISH_SOFT:

        case _STATUS_FINISH_PACK:

        case _STATUS_FINISH_MUSIC:

        case _STATUS_FINISH_ISO:

        case _STATUS_FINISH_MOVIE:

        case _STATUS_FINISH_PUBLISH:

        case _STATUS_FINISH_PICTURE:

        case _STATUS_FINISH_UNKNOW:
        item.SetImage( 5 );
        break;

        case _STATUS_DELETE:
        item.SetImage( 4 );
        break;

        case _STATUS_ROOT:

        default:
        break;
    }

    if ( task.nStatus == _STATUS_RUNNING )
        item.SetId( 0 );
    else
        item.SetId( GetItemCount() );

    id = InsertItem( item );

    SetItemData( id, task.nID );

    wxString wxsName( task.sName.c_str(), wxConvLocal );

    SetItem( id, 1, wxsName );

    wxString wxs;

    wxs.Printf( wxT( "%lld" ), task.nLen );

    SetItem( id, 2, wxs );

    wxs.Printf( wxT( "%lld" ), task.nFinish );

    SetItem( id, 3, wxs );

    wxs.Printf( wxT( "%0.2f%%" ), 100 * task.fRatio );

    SetItem( id, 4, wxs );

    wxs.Printf( wxT( "%dKB/S" ), task.nSpeed / 1024 );

    SetItem( id, 5, wxs );

    //wxs.Printf( wxT( "%d S" ), task.nTime );

    SetItem( id, 6, TimeToString( task.nTime ) );

    wxs.Printf( wxT( "%d" ), task.nError );

    SetItem( id, 7, wxs );

    wxString wxURL( task.sURL.c_str(), wxConvLocal );

    SetItem( id, 8, wxURL );

}

wxString CTaskList::TimeToString( int seconds )
{
    wxString retstr;

    if ( seconds < 0 )
    {
        retstr = wxGetApp().GetWxStr( _S_UNKNOW );
        return retstr;
    }

    if ( seconds > 86400 )
    {
        retstr.Printf( wxGetApp().GetWxStr( _S_TASKLIST_DAY ), seconds / 86400 );

    }
    else
    {
        wxString temp;
        temp.Printf( wxGetApp().GetWxStr( _S_TASKLIST_TIME ),
                     ( seconds % 86400 ) / 3600, ( seconds % 3600 ) / 60, seconds % 60 );
        retstr += temp;
    }

    return retstr;
}

void CTaskList::DynamicLang()
{

    wxListItem itemCol;
    GetColumn( 1, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_FILENAME ) );
    SetColumn( 1, itemCol );

    GetColumn( 2, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_SIZE ) );
    SetColumn( 2, itemCol );

    GetColumn( 3, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_FINISH ) );
    SetColumn( 3, itemCol );

    GetColumn( 4, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_PROGRESS ) );
    SetColumn( 4, itemCol );

    GetColumn( 5, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_SPEED ) );
    SetColumn( 5, itemCol );

    GetColumn( 6, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_LEFTTIME ) );
    SetColumn( 6, itemCol );

    GetColumn( 7, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_RETRY ) );
    SetColumn( 7, itemCol );

    GetColumn( 8, itemCol ) ;
    itemCol.SetText( wxGetApp().GetWxStr( _S_URL ) );
    SetColumn( 8, itemCol );

}

void CTaskList::OnErase( wxEraseEvent& event )
{ //KDE下,白色会变灰色底,在List里不能通过这个方法修改背景颜色

    event.Skip();
    //	wxCoord w,h;
    //	wxPaintDC pdc(this);
    //	pdc.GetSize(&w,&h);
    //	pdc.Clear();
    //pdc.DrawIcon(*m_tjicon,(w-90)/2,h-100);
    //	return;
}

void CTaskList::OnRightClick( wxListEvent& event )
{

    //find mainwin
    MainFrame * mf = ( MainFrame* ) ( GetParent() ->GetParent() ->GetParent() );
    _TaskAttr* pcur = mf->GetCurrentTask();

    if ( pcur == NULL )
        return ;

    //pop a menu,run,stop,delete,prop ...
    // 菜单开始
    wxMenu *rootPopMenu = new wxMenu; //( wxT( "Options" ) );

    wxMenuItem *ti;

    ti =
        new wxMenuItem( rootPopMenu, mgID_PRUN, _MGSTR( _S_TIP_RUNTASK ), wxT( "help" ) );

    ti->SetBitmap( wxBitmap( run_xpm ) );

    rootPopMenu->Append( ti );

    ti =
        new wxMenuItem( rootPopMenu, mgID_PSTOP, _MGSTR( _S_TIP_STOPTASK ), wxT( "help" ) );

    ti->SetBitmap( wxBitmap( stop_xpm ) );

    rootPopMenu->Append( ti );

    ti =
        new wxMenuItem( rootPopMenu, mgID_PDELETE, _MGSTR( _S_TIP_DELETETASK ), wxT( "help" ) );

    ti->SetBitmap( wxBitmap( delete_xpm ) );

    rootPopMenu->Append( ti );

    rootPopMenu->AppendSeparator();

    ti =
        new wxMenuItem( rootPopMenu, mgID_PRELOAD, _MGSTR( _S_TIP_RELOADTASK ), wxT( "help" ) );

    ti->SetBitmap( wxBitmap( reload_xpm ) );

    rootPopMenu->Append( ti );

    rootPopMenu->AppendSeparator();

    ti =
        new wxMenuItem( rootPopMenu, mgID_PROPERTY, _MGSTR( _S_TIP_PROPERTY ), wxT( "help" ) );

    ti->SetBitmap( wxBitmap( property_xpm ) );

    rootPopMenu->Append( ti );

    /*
    //共用工具条提示
    rootPopMenu->Append( mgID_PRUN, _MGSTR(_S_TIP_RUNTASK) );	
    rootPopMenu->Append( mgID_PSTOP, _MGSTR( _S_TIP_STOPTASK ) );	
    rootPopMenu->Append( mgID_PDELETE, _MGSTR( _S_TIP_DELETETASK ) );
    rootPopMenu->Append( mgID_PRELOAD, _MGSTR( _S_TIP_RELOADTASK ) );	
    rootPopMenu->Append( mgID_PROPERTY, _MGSTR( _S_TIP_PROPERTY ) );	
    */


    switch ( pcur->nStatus )
    {

        case _STATUS_RUNNING:

        case _STATUS_WAITING:
        {
            rootPopMenu->Enable( mgID_PRUN, false );
            rootPopMenu->Enable( mgID_PDELETE, true );

        }

        break;

        case _STATUS_PAUSE:
        {

            rootPopMenu->Enable( mgID_PSTOP, false );

        }

        break;

        case _STATUS_WRONG:
        {

            rootPopMenu->Enable( mgID_PSTOP, false );

        }

        break;

        case _STATUS_FINISH_SOFT:

        case _STATUS_FINISH_PACK:

        case _STATUS_FINISH_MUSIC:

        case _STATUS_FINISH_ISO:

        case _STATUS_FINISH_MOVIE:

        case _STATUS_FINISH_PUBLISH:

        case _STATUS_FINISH_PICTURE:

        case _STATUS_FINISH_UNKNOW:
        {
            rootPopMenu->Enable( mgID_PRUN, false );
            rootPopMenu->Enable( mgID_PSTOP, false );

        }

        break;

        case _STATUS_DELETE:
        {

            rootPopMenu->Enable( mgID_PSTOP, false );

        }

        break;

        default:
        break;

    }

    PopupMenu( rootPopMenu );
    delete rootPopMenu;
}

//pop menu
void CTaskList::OnRun( wxCommandEvent& event )
{
    MainFrame * mf = ( MainFrame* ) ( GetParent() ->GetParent() ->GetParent() );
    mf->OnStartTask( event );
}

void CTaskList::OnStop( wxCommandEvent& event )
{
    MainFrame * mf = ( MainFrame* ) ( GetParent() ->GetParent() ->GetParent() );
    mf->OnStopTask( event );
}

void CTaskList::OnDelete( wxCommandEvent& event )
{
    MainFrame * mf = ( MainFrame* ) ( GetParent() ->GetParent() ->GetParent() );
    mf->OnCancelTask( event );
}

void CTaskList::OnProperty( wxCommandEvent& event )
{
    MainFrame * mf = ( MainFrame* ) ( GetParent() ->GetParent() ->GetParent() );
    mf->OnProperty( event );
}

void CTaskList::OnReload( wxCommandEvent& event )
{
    MainFrame * mf = ( MainFrame* ) ( GetParent() ->GetParent() ->GetParent() );
    mf->OnReloadFile( event );
}

⌨️ 快捷键说明

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