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(); }
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 ); }
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() ); }
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() ); }
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(); }
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(); }
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 ); }
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() ); }