Exemplo n.º 1
0
QModelIndex FilmsListModel::parent( const QModelIndex& index ) const
{
    if( index.isValid() )
    {
        FilmItem* parentItem = static_cast<FilmItem*>( index.internalPointer() )->GetParent();

        if( parentItem != rootItem )
        {
            return createIndex( parentItem->GetRow(), 0, parentItem );
        }
    }

    return QModelIndex();
}
Exemplo n.º 2
0
bool FilmsListModel::setData( const QModelIndex& index, const QVariant& value, int role )
{
    if( index.isValid() && role == Qt::EditRole )
    {
        QMutexLocker locker( &mutexDataEdit );
        isDatabaseChanged = true;

        FilmItem* film = static_cast<FilmItem*>( index.internalPointer() );
        film->SetColumnData( index.column(), value );
        emit dataChanged( index, index );
        return( true );
    }

    return( false );
}
Exemplo n.º 3
0
int FilmsListModel::rowCount( const QModelIndex& parent ) const
{
    if( parent.column() > 0 )
    {
        return( 0 );
    }

    FilmItem* parentItem = rootItem;

    if( parent.isValid() )
    {
        parentItem = static_cast<FilmItem*>( parent.internalPointer() );
    }

    return( parentItem->GetChildrenCount() );
}
Exemplo n.º 4
0
QModelIndex FilmsListModel::index( int row, int column, const QModelIndex& parent ) const
{
    if( hasIndex( row, column, parent ) )
    {
        FilmItem* parentItem = rootItem;

        if( parent.isValid() )
        {
            parentItem = static_cast<FilmItem*>( parent.internalPointer() );
        }

        FilmItem* childItem = parentItem->GetChild( row );

        if( childItem != nullptr )
        {
            return( createIndex( row, column, childItem ) );
        }
    }

    return( QModelIndex() );
}
Exemplo n.º 5
0
void MovedFilmsWindow::MoveSelected()
{
    if( lSelected->text().toInt() == 0 )
    {
        QMessageBox::information( this, tr("Moved films" ), tr("Select the files to move.") );
        return;
    }

    for( QPair<QString,QVariant> itemData : gbFounded->GetSelectedItemsData() )
    {
          // Uncheck and disable
        gbFounded->DisableItem( itemData.first, true );

          // Change filename
        FilmItem* film = (FilmItem*) itemData.second.value<void*>();
        film->SetColumnData( FilmItem::FileNameColumn, itemData.first );
        film->SetIsFileExists( FilmItem::Exists );

        unavailableFilms.removeOne( film );
    }

    lSelected->setText( "0" );
    emit FilmsMoved();
}
Exemplo n.º 6
0
void AddFilmWindow::InformationLoaded( const FilmItem& film, const QString& posterFileName )
{
    if( ePosterFileName->text().isEmpty() && !posterFileName.isEmpty() )
    {
        filmNewPosterName = film.GetColumnData( FilmItem::PosterColumn ).toString();
        ePosterFileName->setText( posterFileName );
        bOpenPoster->setText( tr("Clear") );
    }

    if( eTitle->text().isEmpty() )
    {
        eTitle->setText( film.GetTitle() );
    }

    eOriginalTitle->setText( film.GetColumnData( FilmItem::OriginalTitleColumn ).toString() );
    eTagline->setText( film.GetColumnData( FilmItem::TaglineColumn ).toString() );

    sbYear->setValue( film.GetColumnData( FilmItem::YearColumn ).toInt() );
    sbBudget->setValue( film.GetColumnData( FilmItem::BudgetColumn ).toDouble() );
    sbRating->setValue( film.GetColumnData( FilmItem::RatingColumn ).toDouble() );

    eCountry->setText( film.GetColumnData( FilmItem::CountryColumn ).toString() );
    eGenre->setText( film.GetColumnData( FilmItem::GenreColumn ).toString() );
    eDirector->setText( film.GetColumnData( FilmItem::DirectorColumn ).toString() );
    eProducer->setText( film.GetColumnData( FilmItem::ProducerColumn ).toString() );
    eScreenwriter->setText( film.GetColumnData( FilmItem::ScreenwriterColumn ).toString() );
    eComposer->setText( film.GetColumnData( FilmItem::ComposerColumn ).toString() );

    lStarringText->setText( film.GetColumnData( FilmItem::StarringColumn ).toString() );
    lDescriptionText->setText( film.GetColumnData( FilmItem::DescriptionColumn ).toString() );

    bLoad->setEnabled( true );
    bOk->setEnabled( true );
    bCancel->setEnabled( true );
    progressBar->hide();
}
Exemplo n.º 7
0
void AddFilmWindow::Save()
{
    QList<QVariant> data;

      // Order of the columns in file "filmslist/filmitem.h"
    data << eTitle->text()
         << eOriginalTitle->text()
         << eTagline->text()
         << sbYear->value()
         << eGenre->text()
         << eCountry->text()
         << eDirector->text()
         << eProducer->text()
         << eScreenwriter->text()
         << eComposer->text()
         << sbBudget->value()
         << sbRating->value()
         << cIsViewed->isChecked()
         << cIsFavourite->isChecked()
         << viewsCount
         << lStarringText->text()
         << lDescriptionText->text()
         << eTags->toPlainText()
         << eFilmFileName->text()
         << filmNewPosterName
            // Invisible items
         << viewingDates;

    FilmItem* film = new FilmItem( data );

      // Manipulations with poster
    QString posterFileName = ePosterFileName->text();

    if( !posterFileName.isEmpty() )
    {
        QString postersDir = settings->GetPostersDirPath();

          // Create a directory for posters if it does not exist
        if( !QFile::exists( postersDir ) )
        {
            QDir().mkdir( postersDir );
        }

        int newHeight = settings->GetScalePosterToHeight();
        QPixmap pixmap( posterFileName );

          // Move to directory of the posters with selected format and quality
          // with or without scaling (if set in settings)
        if( newHeight != 0 && newHeight < pixmap.height() )
        {
            pixmap = pixmap.scaledToHeight( newHeight, Qt::SmoothTransformation );
        }

        QString newPosterFileName = film->GetPosterFilePath();

        if( newPosterFileName == posterFileName ) // "EditFilmWindow" mode
        {
            film->SetIsPosterExists( FilmItem::Exists );
        }
        else
        {
            QString newFormat = settings->GetPosterSavingFormat();
            int newQuality = settings->GetPosterSavingQuality();

            if( pixmap.save( newPosterFileName, newFormat.toUtf8(), newQuality ) )
            {
                film->SetIsPosterExists( FilmItem::Exists );
            }
            else
            {
                QMessageBox::warning( this, tr("Saving"), tr("Error while moving poster to posters directory.") );
            }
        }
    }

    emit Done( film );
}
Exemplo n.º 8
0
QVariant FilmsListModel::data( const QModelIndex& index, int role ) const
{
    if( index.isValid() )
    {
        FilmItem* item = static_cast<FilmItem*>( index.internalPointer() );
        int column = index.column();

        switch( role )
        {
            case Qt::DisplayRole :
            {
                return( item->GetColumnData( index.column() ) );
            }

            case Qt::TextAlignmentRole :
            {
                if( column == FilmItem::YearColumn ||
                    column == FilmItem::RatingColumn ||
                    column == FilmItem::IsViewedColumn ||
                    column == FilmItem::IsFavouriteColumn ||
                    column == FilmItem::ViewsCountColumn )
                {
                    return( Qt::AlignCenter );
                }
                else
                {
                    return( (int) Qt::AlignLeft | Qt::AlignVCenter );
                }
            }

            case Qt::BackgroundColorRole :
            {
                if( settings->GetCheckFilesOnStartup() && !item->GetIsFileExists() )
                {
                    return( QColor( settings->GetUnavailableFileColor() ) );
                }

                break;
            }

            case Qt::DecorationRole :
            {
                if( column == FilmItem::PosterColumn && item->GetIsPosterExists() )
                {
                    QPixmap pixmap;

                    if( pixmap.load( item->GetPosterFilePath() ) )
                    {
                        return( pixmap );
                    }
                }

                break;
            }

            case UserRoles::StringListRole :
            {
                if( column == FilmItem::GenreColumn ||
                    column == FilmItem::CountryColumn ||
                    column == FilmItem::DirectorColumn ||
                    column == FilmItem::ScreenwriterColumn ||
                    column == FilmItem::StarringColumn ||
                    column == FilmItem::TagsColumn )
                {
                    QString str = item->GetColumnData( column ).toString();

                    if( !str.isEmpty() )
                    {
                        QStringList strings = str.split( "," );

                        for( QString& s : strings )
                        {
                            s = s.trimmed();
                        }

                        return( strings );
                    }
                }
            }
        }
    }

    return( QVariant() );
}