organizecollectiondialog.ui.h

来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 218 行

H
218
字号
#include "amarok.h"#include "collectionbrowser.h"#include "collectiondb.h"#include "qstringx.h"QString OrganizeCollectionDialog::buildDestination( const QString &format, const MetaBundle &mb ) const{    bool isCompilation = false;    if( !mb.album().isEmpty() )    {        const int albumId = CollectionDB::instance()->albumID( mb.album() );        isCompilation = CollectionDB::instance()->albumIsCompilation( QString::number(albumId) );    }    QMap<QString, QString> args;    QString artist = mb.artist();    QString albumartist = artist;    if( isCompilation )        albumartist = i18n( "Various Artists" );    args["theartist"] = cleanPath( artist );    args["thealbumartist"] = cleanPath( albumartist );    if( ignoreTheCheck->isChecked() && artist.startsWith( "The " ) )        CollectionView::instance()->manipulateThe( artist, true );    artist = cleanPath( artist );    if( ignoreTheCheck->isChecked() && albumartist.startsWith( "The " ) )        CollectionView::instance()->manipulateThe( albumartist, true );    albumartist = cleanPath( albumartist );    for( int i = 0; i < MetaBundle::NUM_COLUMNS; i++ )    {        if( i == MetaBundle::Score || i == MetaBundle::PlayCount            || i == MetaBundle::LastPlayed || i == MetaBundle::Mood )            continue;        args[mb.exactColumnName( i ).lower()] = cleanPath( mb.prettyText( i ) );    }    args["artist"] = artist;    args["albumartist"] = albumartist;    args["folder"] = folderCombo->currentText();    args["initial"] = albumartist.mid( 0, 1 ).upper();    args["filetype"] = mb.url().path().section( ".", -1 ).lower();    QString track;    if ( mb.track() )        track.sprintf( "%02d", mb.track() );    args["track"] = track;    Amarok::QStringx formatx( format );    QString result = formatx.namedOptArgs( args );    if( result.startsWith( folderCombo->currentText() ) )    {        QString tail = result.mid( folderCombo->currentText().length() );        if( !tail.startsWith( "/" ) )            tail.prepend( "/" );        return folderCombo->currentText() + tail.replace( QRegExp( "/\\.*" ), "/" );    }    return result.replace( QRegExp( "/\\.*" ), "/" );}QString OrganizeCollectionDialog::buildFormatTip() const{    QMap<QString, QString> args;    for( int i = 0; i < MetaBundle::NUM_COLUMNS; i++ )    {        if( i == MetaBundle::Score || i == MetaBundle::PlayCount            || i == MetaBundle::LastPlayed || i == MetaBundle::Mood )            continue;        args[MetaBundle::exactColumnName( i ).lower()] = MetaBundle::prettyColumnName( i );    }    args["albumartist"] = i18n( "%1 or %2" ).arg( i18n("This feature only works with \"The\", so either don't translate it at all, or only translate artist and album", "Album Artist, The") , i18n("The Album Artist") );    args["thealbumartist"] = i18n( "The Album Artist" );    args["theartist"] = i18n( "The Artist" );    args["artist"] = i18n( "%1 or %2" ).arg( i18n( "This feature only works with \"The\", so either don't translate it at all, or only translate Artist", "Artist, The") , i18n( "The Artist") );    args["folder"] = i18n( "Collection Base Folder" );    args["initial"] = i18n( "Artist's Initial" );    args["filetype"] = i18n( "File Extension of Source" );    args["track"] = i18n( "Track Number" );    QString tooltip = i18n( "<h3>Custom Format String</h3>" );    tooltip += i18n( "You can use the following tokens:" );    tooltip += "<ul>";    for( QMap<QString, QString>::iterator it = args.begin();            it != args.end();            ++it )    {        tooltip += QString( "<li>%1 - %2" ).arg( it.data(), "%" + it.key() );    }    tooltip += "</ul>";    tooltip += i18n( "If you surround sections of text that contain a token with curly-braces, "            "that section will be hidden if the token is empty." );    return tooltip;}QString OrganizeCollectionDialog::buildFormatString() const{    QString format = "%folder/";    if( filetypeCheck->isChecked() )        format += "%filetype/";    if( initialCheck->isChecked() )        format += "%initial/";    format += "%albumartist/";    if( spaceCheck->isChecked() )    {        format += "%album{_(Disc_%discnumber)}/";        format += "{%track_-_}%title.%filetype";    }    else    {        format += "%album{ (Disc %discnumber)}/";        format += "{%track - }%title.%filetype";    }    if( customschemeCheck->isChecked() )        format = formatEdit->text();    return format;}void OrganizeCollectionDialog::setPreviewBundle( const MetaBundle &bundle ){   previewBundle = bundle;}void OrganizeCollectionDialog::preview( const QString &format ){   emit updatePreview( buildDestination( format, previewBundle ) );}QString OrganizeCollectionDialog::cleanPath( const QString &component ) const{    QString result = component;    if( asciiCheck->isChecked() )    {        result = Amarok::cleanPath( result );        result = Amarok::asciiPath( result );    }    if( !regexpEdit->text().isEmpty() )        result.replace( QRegExp( regexpEdit->text() ), replaceEdit->text() );    result.simplifyWhiteSpace();    if( spaceCheck->isChecked() )        result.replace( QRegExp( "\\s" ), "_" );    if( vfatCheck->isChecked() )        result = Amarok::vfatPath( result );    result.replace( "/", "-" );    return result;}void OrganizeCollectionDialog::update( int dummy ){    Q_UNUSED( dummy );    QString oldFormat = formatEdit->text();    if( !customschemeCheck->isChecked() )        formatEdit->setText( buildFormatString() );    if( customschemeCheck->isChecked() || oldFormat==formatEdit->text() )        emit updatePreview( buildDestination( formatEdit->text(), previewBundle ) );}void OrganizeCollectionDialog::update( const QString & dummy ){    Q_UNUSED( dummy );    update( 0 );}void OrganizeCollectionDialog::slotDetails(){    detailed = !detailed;    if( detailed )    {        ignoreTheCheck->show();        customschemeCheck->show();        replacementGroup->show();        formatLabel->show();        formatEdit->show();        formatHelp->show();    }    else    {        ignoreTheCheck->hide();        customschemeCheck->hide();        replacementGroup->hide();        formatLabel->hide();        formatEdit->hide();        formatHelp->hide();    }    if( dynamic_cast<QWidget *>(parent()) ) {        static_cast<QWidget *>(parent())->adjustSize();        static_cast<QWidget *>(parent())->updateGeometry();    }}void OrganizeCollectionDialog::init(){    detailed = true;    formatHelp->setText( QString( "<a href='whatsthis:%1'>%2</a>" ).            arg( Amarok::escapeHTMLAttr( buildFormatTip() ), i18n( "(Help)" ) ) );}

⌨️ 快捷键说明

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