| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
mCurrentType wasn't initialized in AddCoverDialog constructor, so it
ended up with a random number. Fortunately it was too big for a
Pg::SmallInt and the db choked with the value being too big for a
Pg::SmallInt.
Fix: Connect QComboBox::currentIndexChanged(QString) first and then add
items to the QComboBox. That triggers the SLOT and sets mCurrentType to
the right value.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix adding quality to cover files in database by binding a NULL value
when type != Movie in FilesTreeModel.
While fixing this I discovered a typo in the database schema. The
sequence for genres was named genres_igrenres_id__seq. Removed the
superfluous 'r' in the name and fixed migdb.py on the way.
Now SheMov doesn't crash any more when adding a new series part, but the
new item still doesn't get selected...
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First try on fixing this. Still use
QItemSelectionModel::selectionChanged, but ignore the QItemSelections.
Use QItemSelectionModel::selectedRows() instead and compute the
seriesPartIds on every change. Hopefully this guarantees having valid
QModelIndexes all the time.
This fix also obsoletes the quite awkward function
SeriesTreeWidget::mapToSource(). Make the QSortProxyModel of
SeriesTreeWidget available through SeriesTreeWidget::seriesProxy()
instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Well, the point of this commit was to have one NewMovieWizard in memory
all the time and just show it when it's needed.
For this several things were necessary:
1. implement initializePage() for every QWizardPage. For this I had to
implement reset functions in some models.
2. setOption(QWizard::IndependentPages, true) in Wizard constructor.
3. Make NewMovieWizard a member of SheMov... Well, it was, already, but
I didn't remove the ptr.
The good news: the Wizard works.
Bad News:
1. Program crashes in ArchiveViewWizard::currentChanged (see TODOS)
2. Cover files also have a quality Attribute attached.
|
|
|
|
|
|
|
| |
adapted StatisticsDialog to the new database schema and make it use
WebKit and HTML to display the graph bars.
This change obsoleted the classes ActorCountModel and GraphBarWidget.
|
|
|
|
|
| |
Show number of selected items of FilesTreeView in statusbar when
selecting files.
|
|
|
|
|
|
|
| |
Select the last selected series with
QItemSelectionModel::setCurrentIndex(), otherwise the current index
won't be set. On closing the program currentIndex() would be invalid and
nothing is selected when starting SheMov again.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When doubleclicking a picture in FileTreeWidget the pictureViewer
is shown. Doubleclicking a movie file launches the default movie
player.
Since PictureViewer is now used in FileSystemWidget and
ArchiveTreeView a global instance is needed. The appropriate place
for this is a singleton. Since we already had a singleton for
QAbstractItemModels I renamed it to SmGlobals and added a function
to return a PictureViewer object. Renaming it was quite easy
thanks to QtCreator's ability to rename variable names.
|
|
|
|
|
|
|
|
|
|
| |
SeriesTreeWidget::writeSettings() writes currentIndex() to QSettings on
close. readSettings() selects it again on startup.
I tried to remember all selected indexes, but that got way too complex
and didn't work when SeriesParts were selected. Somehow
QItemSelectionModel wouldn't select indexes with parents other than
QModelIndex().
|
|
|
|
|
|
| |
Don't add items to mExpandedItems in readSettings. This already happens
in the slot itemExpanded. Before the list quickly filled up with
duplicate entries.
|
|
|
|
|
| |
Remove default database from SheMov. Now open named database in
SmModelSingleton and use configured settings.
|
|
|
|
|
|
|
|
| |
Construct a window title in ArchiveTreeView and show it when Tab is
activated or file mode is changed.
Also deleted the unneded slot newWindowTitle in SheMov: setWindowTitle
is a slot by itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hopefully removed all code connected to ArchiveViewWidget in this
tree.
Files removed ({h,cpp}):
*archiveeditdialog
*listeditor
*covereditor
*archivefilewidget
*addmoviewizard
*archivefileview
*archiveproxy
*sizedelegate
*archivedidelegate
*archiveitemeditdialog
*coveritem
*movieitem
*moviemodel
*moviemodelsingleton
*listmodel
*listmodelsingleton
*archiveviewwidget
*archiveiteminfoedit
*archiveitemcoveredit
*fileinfoitem
*fileinfomodel
See added file TODOS for stuff that needs fixes.
|
|
|
|
|
|
| |
Finally we can add covers to already existsing series. Seems to work,
but I encountered a crash when merging series while testing...
Unfortunately I don't know the cause.
|
|
|
|
|
| |
Files can now be delete from the files tree view. When doing so, the
files will be deleted permanently and also removed from the database.
|
|
|
|
|
| |
Also reset the size counter in FilesTreeWidget when changing series in
normal view.
|
|
|
|
|
|
| |
The dvd number can be set for several files at once with this function.
Also fixed a little bug when showing the series name in the status bar.
Only show file part number if it is > 0.
|
|
|
|
|
| |
Files from the archive can be moved to a configurable directory with
this function. The specified files won't be deleted from the database.
|
|
|
|
|
|
| |
Show size of selected items in status bar when files are selected in the
FileView. Also show series name of current selected file in the general
status bar.
|
|
|
|
| |
Implemented filter for showing only local files or only archived files.
|
|
|
|
|
|
|
| |
Created function populate(QSqlQuery) to make population of model more
generic.
Preparation for different views of files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Actually made this function work. Forgot to handle actors and genres.
Also several bugfixes in other parts:
-fix typo in FilesTreeModel query
-commit changes ind MappingTableModel::addItem, making the genre and
actor widgets work as intended
-remove redundant MappingTableModel::find(), already implemented in
SmTreeModel
-call next() instead of exec() in SeriesTreeModel::addSeriesPart. Query
is already executing if it's a select
-use QModelIndex::row() instead of column() in
MappingTableWidget::removeItem()
-add partNo to layout in MovieInfopage::MovieInfoPage()
-add convenience function setMappings() to MappingTableModel
|
|
|
|
|
| |
This version is not tested and may contain some very exiting, new bugs.
But it compiles.
|
|
|
|
|
|
|
| |
-new memfunc: SeriesTreeModel::addSeries
-new memfunc: SeriesTreeModel::addSeriesPart
started FilesTreeModel::addFile, not finished yet.
|
|
|
|
|
| |
Started accept() in NewMovieWizard. Seems we need some major revamping
of SeriesTreeModel et al.
|
|
|
|
| |
Implemented 2 new pages for NewMovieWizard: actors and genres.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The first page of NewMovieWizard gave me quite a headache. It crashed
with a segmentation fault because of exposing mDvdNo via registerField()
without actually assigning a QCheckBox to it. The backtrace isn't very
helpful in such a case.
I also fixed some bugs on the way:
1. use SmTreeItem::setData in SmTreeModel::addRow instead of deleting
the old item and creating a new one. This way I don't need to take care
of the parent.
2. get data of old item in SmTreeModel::reparent before calling
removeRows. This call deletes the item.
3. Fix column alignments in WizardTreeModel for size column
|
|
|
|
|
|
|
|
| |
Finished GUI for first page of NewMovieWizard. To make things easier I
added two new member functions to SmTreeModel:
-QModelIndex find() to find items by value of a column
-void reparent() to remove an item from one parent and add it to
another
|
|
|
|
|
|
|
|
|
| |
Changes:
-changed signature of ArchiveTreeView::playSelected() to take a QString
argument for the preferred player
-Bugfix in SeriesTreeModel::findSortedMovies: use SeriesId for
mSortedMovieListQuery
-SheMov: use mOpenWithMapperAV for mATree instead of deprecated mAVWidget
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Movie files are played in the default player when double clicking on a
movie, but not when doubleclicking on a series. The latter invokes the
edit event on the series. Don't yet know if this is a good thing or not.
Changes on the way there:
1. new helper function for finding the right player. Still need to fix
FileSystemWidget to also use the Helper::function. It's a simple copy &
paste from there.
2. added function SeriesTreeModel::findSortedMovies. It returns a
QFileInfoList sorted by seriespart and fileno.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implemented widgets for actor and genre editing of movies. Created new
MappingTableWidget for both genres and actors and revamped
ArchiveTreeView to show 2 widgets below the FilesTreeView separated by a
splitter.
While testing the new setup several bugs were fixed:
-an SQL syntax error in FilesTreeModel
-fixed SmModelSingleton to properly work with table names
I also changed the signature of MappingTableModel::addMapping for the
ease of use and added MappingTableModel::removeMapping.
MappingTableModel got 2 new convenience functions:
1. bool contains(QString) to check if an item is already present
2. QModelIndex find() to get the index of a specific value from the
model.
|
|
|
|
|
| |
Pass the right var to Migrator::newEntry for the file nubmer. Before it
passed the series part number as the file number to newEntry.
|
|
|
|
|
|
|
|
|
| |
Implemented new Model for Mapping tables. This model is intended to
replace the old ListModel and Singleton. MappingTableModel is derived
from SmTreeModel and can be accessed using SmModelSingleton.
It's quite dynamic building its queries, and has yet to be tested.
Hopefully I got it right the first time :)
|
|
|
|
|
|
|
|
| |
Implemented individual sorting for FilesTreeModel:
1. Don't compare the "Movies" and "Covers" nodes, keep the initial
order.
2. Compare Size and DvdNo by int/longlong instead of comparing the
displayed strings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It wasn't as easy as I thought. Quite big changes:
1. I changed the query for setIds in FilesTreeModel. Initially it
executed a database query for every id. Changed it to WHERE
seriespart_id IN (ids). I didn't have a chance to test the first
version, but this one is blazing fast.
2. Fixed a recursio ad infinitum in FilesTreeModel. This happens if you
call data() from data(). Either use the *item or use a role different
from what you've been called.
3. Introduce a new function in SeriesTreeModel: QList<QVariant>
childrenColumnList. It returns a QList from the children values of the
given column.
4. Lot's of UI changes. Hide unneded columns, align the remaining ones
properly.
What doesn't work:
we can't let the database do the sorting of files. We need a proxy for
this.
|
|
|
|
|
| |
Introduced filestreewidget, just like seriestreewidget. The connection
is still missing, though.
|
|
|
|
|
|
|
|
|
|
| |
The SmUberModel class wasn't needed at all, so I removed it.
Instead I renamed SmUmberModelSingleton into a real singleton
for all QAbstractItemModel*, though right now it only supports
the SeriesTreeModel and FileTreeModel. But it should eventually
evolve into a singleton for all QAbstractItemModel *. For this
I renamed the class SmUberModelSingleton to SmModelSingleton.
|
|
|
|
|
|
| |
No visible representation yet. Implemented setData for quality and
dvdno, but not tested yet. Dunno yet if anything else has to be
editable.
|
|
|
|
|
| |
Implemented function to return a QFileInfoList of only the movies for a
given QModelIndex.
|
|
|
|
| |
Implemented expand and collapse actions for SeriesTreeWidget.
|
|
|
|
|
| |
SeriesTreeWidget now retains its last state regarding sort order and
expanded items.
|
|
|
|
| |
Sort Parts regarding to their part number.
|
|
|
|
|
|
|
|
|
|
|
| |
Implemented frontend for SeriesTreeModel::deleteFromSeries. I hope
QPersistentModelIndexes work as advertised. From the qt-sources it seems
that a QPersistentModelIndex is automatically updated by
QAbstractItemModel when calling begin(Remove|Insert)Rows. Testing worked
out fine.
While at it I found a bug in SmTreeModel. removeRows has to be called
with (i - 1) instead of (i) to remove the correct nodes.
|
|
|
|
| |
It compiles, let's ship it. Totally untested.
|
|
|
|
|
| |
Avoid code duplication by handling the two different queries more
generic so the result set can be fetched in just one while loop.
|
|
|
|
|
|
| |
Implemented SeriesTreeModel::findFiles in preparation for deleting files
from SeriesTreeView. Totally untested, of course, and the new action in
SheMov doesn't do anything.
|
|
|
|
|
|
|
|
| |
Another not so atomic commit. Inserting a new serie by triggering the
action in the context menu now works. While at it I revamped setData and
put the if/elses into functions.
Also fixed a bug in setData: Use TypeRole instead of the Fields enum.
|
|
|
|
|
|
| |
Adding an item to the TreeView works, but it doesn't get focus after
inserting. Also the data is not shown. And setting the title of the new
item should make the database puke.
|
|
|
|
|
| |
Return false from setData if new name == old name. This made the entries
disappear from tree.
|
|
|
|
|
| |
-Hide columns 1 - 5 in SeriesTreeWidget
-Resort SeriesTreeWidget when SeriesName is changed
|