| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Only show series with files on the hd.
|
|
|
|
| |
Introduce SmGlobals::iconFor to retrieve the configured item.
|
|
|
|
|
|
|
|
|
|
| |
Don't try to delete all the prepared statements manually. Get rid of the
~destructors and just close the QSqlDatabase. close() deletes all
Statements.
Also, quit() all QThreads on closeEvent() except CompleterProducer. When
the experimental archive view gets merged, that QThread is gone. No need
to bother...
|
|
|
|
| |
Set the main window title according to selected tab.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use JSON output from ffprobe instead of string parsing to get some kind
of type safety.
For doing that, some changes were needed in FileView: Use delegates for
displaying Duration and Bitrate instead of mangling output in
Qt::Displayrole.
To reuse code, move all delegates from the new Archive to a separate
file.
And, of course, the initial objective: Show the accumulated size and
duration of selected files in the status bar from the experimental
archive.
|
|
|
|
|
|
|
| |
Use new icon configuration consistently in:
* Filemanager
* NewMovieWizard
* Experimental view
|
|
|
|
|
| |
Use plpgsql functions to edit nodes. Makes the program logic much
easier. Also, rename rename() to edit() :)
|
|
|
|
| |
Handle actions dependent on type node.
|
| |
|
| |
|
|
|
|
|
| |
QStandardItemModel is much better than a poorly derived
QStringListModel...
|
|
|
|
|
| |
Create new dialogs for editing actors, genres and metadata. IMHO like
this it's much clearer who does what. KISS!
|
| |
|
|
|
|
| |
We're getting there, slowly, but steadily :)
|
|
|
|
| |
Well, select DISTINCT :)
|
|
|
|
|
| |
* make files double-clickable
* implement edit actions for files
|
|
|
|
|
|
|
|
|
| |
* Save header states
* Implement delegates for columns
* unify size and duration to 1 column
* colorize View
... and lots of other things I forgot :)
|
|
|
|
|
|
|
|
|
| |
Implement a new file model for the archive. It's quite basic at this
stage, but finally something happens when clicking the archive tree.
Also, implement the interaction (signal -> slot) between the views and
models in an explicit controller to prevent the mess from the old
archive.
|
|
|
|
|
|
|
|
|
|
|
| |
We need a destructor for ArchiveModel, because we have to stop the
collectors first. Otherwise there will be random crashes all over the
place on exit when the Threads are destroyed while they're still
running.
Also, get rid of the signals collectorDone and collectorAboutToBeDone.
The latter was unused, and the former can be replaced with
QAbstractItemModel::modelReset.
|
|
|
|
|
| |
* make it sortable
* change the header when changing the sort order
|
|
|
|
|
| |
Cancel the collectors if they're still running. Otherwise we may get
outdated results when refreshing the view after an update or delete.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was a hard one, actually. Since we only returned a pointer from the
ArchiveCollector, it worked _most_ of the time, but crashed at random
when the view was reading the tree while the collector was updating it.
So create a working copy constructor for SmRootItem and return a copy of
the the tree when the collector is done.
I bet that's also the reason for the random crashes in the filesystem
view.
|
|
|
|
|
| |
Well, sounds easier as it is to keep track of expanded items, but
finally I got it!
|
|
|
|
|
| |
Read the cache if there is one, if not, read it in another thread and
update the view when it's done.
|
|
|
|
|
|
|
| |
This should be 2 commits, really...
Fix: write cache after renaming an item
Protect: protect the accessors of ArchiveCollector with Mutexes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Create a caches of database archive views. Esp. gathering data for
actors takes a long time, and I don't see how to optimize the queries.
So write them to a QDataStream. It was much more difficult that it
sounds. Once again I was lost in recursion. Did I mention that I hate
recursion?
The solution:
When writing use the address of the SMTreeItem cast to qint64 as unique
key. On reading build a hash with the address as key and use it to find
the parent of the next item.
I hope that makes sense...
|
|
|
|
|
| |
Child items of RootItem were initialized with 9 columns instead of 8 in
ArchiveModel. Loose the stray QVariant()
|
|
|
|
|
|
|
|
|
|
|
| |
Well, well... Recursion isn't that bad at all. Filter experimental
ArchiveView recursive by the following rules:
* check children _and_ parents for filter
* if any child _or_ parent matches, accept the current row, parents and
children.
The column is converted to a QString and matched by QRegExp, so don't
try to match numbers or anything else.
|
|
|
|
|
| |
Implement remove nodes for ArchiveView. Only empty nodes without
children can be removed. Everything else is too dangerous :)
|
|
|
|
|
|
|
| |
While thinking about merging items, I realized that it is not necessary.
Just edit the mappings instead.
However, a fallout is an error function for the TreeView.
|
|
|
|
| |
Rename items: spits out an error message if the new item already exists.
|
|
|
|
|
| |
For the current SortOrder the expanded items are written to the config
file and read on startup.
|
|
|
|
|
| |
Fetching data sometimes takes a long time, so do it in a QThread and
show a progress dialog. Some kludges included :)
|
|
|
|
|
|
|
| |
Filter by QRegExp, but only on the first level according to the sort
order. All items are expanded when filtered.
Also, remember the filter and the sort order when exiting.
|
|
|
|
|
|
|
|
|
| |
Actually do something when the sort order is changed. That resulted in
various fixes to both model and view, since both had completely untested
codepaths.
Most notable fix: Only select those seriesparts which are actually
mapped to the selected genre or actor.
|
|
|
|
|
|
| |
* Show childcount
* Show subtitle or part no
* Resize Widget properly
|
|
|
|
| |
Display the new ArchiveModel in an experimental tab
|
|
The new ArchiveModel allows sorting and display by the series name,
actors and genres. Hopefully it's generic enough to easily add other
sort orders like file location or file type.
For now, it's just there. Not included anywhere. No view, no nothing.
|