| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Enable the delete option in ArchiveTree, but only allow delete when it
has no children.
|
|
|
|
|
|
|
|
| |
Split it up into a small QTreeView and a QTextEdit for the comment.
QTreeView and horizontal scrollbars don't seem to play nice together. Qt
never displays the bar even if ElideText is set to none. So add a
QToolTip for the Subject/Name, since it's most likely not displayed
completely.
|
|
|
|
| |
Don't try to access non-present fields. Weed them out!
|
|
|
|
|
|
| |
Nothing is async any more. Didn't work, anyway. Instead show a
QProgressDialog when gathering data. Was kinda surprising that
processEvents has to be called explicitly... Well, done!
|
|
|
|
|
|
| |
Make it possible to add parent files to files, so we can identify
already downloaded files even if we reencoded them. Record the md5sum in
a new table files_origin.
|
|
|
|
|
| |
Don't just sort alphabetically. Also regard the Series No. by extracting
it via a RegExp.
|
|
|
|
| |
Well, the title says it all. KILL THEM!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Well, this was actually a bit of a drag. You have read the docs very
carefully to get it right. For one, don't construct the drag object in
mousePressEvent if you also want a double click, otherwise you end up
with very weird behavior.
Same goes for the receiving end. Differentiate between dragEnterEvent
and dragMoveEvent, otherwise you'll only be able to drop items if you
hit the right row on entering.
There are some artefacts during the drag, but I guess that's a Qt bug.
Didn't bother to look into it.
|
|
|
|
|
| |
Preparation for drag and drop. Also make it possible to delete
Seriesparts without files.
|
|
|
|
|
| |
Arrange Seriespartsname different so the default implementation of
QSortfilterProxyModel can handle the sorting.
|
|
|
|
|
| |
Fix sorting in ArchiveTree and make it possible to enter zero in
NewMovieWizard.
|
|
|
|
|
| |
Make it possible to delete a SeriesPart. This may happen if eg. you
download the same clip/movie with a better quality.
|
|
|
|
|
|
| |
First try to reimplement "Move to archive" in another way.
Implement an archive browser showing only Series with local parts in
another tab. This part works for now :)
|
|
|
|
|
| |
Save and restore expanded items for Favorites and local files. Added
context menu items for expandAll and collapseAll.
|
|
|
|
| |
Add covers to an already archived movie.
|
|
|
|
|
| |
Clear comboboxes in NewMovieWizard when calling it again. Otherwise
duplicates will pile up :)
|
|
|
|
| |
Remove global toolbar and add a toolbar to each tab instead.
|
|
|
|
| |
Implement lessThan for ArchiveProxy.
|
| |
|
|
|
|
|
|
| |
Re-Implement mark as Favorites in new ArchiveView.
Also, don't block when the Collector is running again and we're trying
to update the view.
|
|
|
|
| |
Missed this one the first time...
|
|
|
|
|
| |
Put actions for files and tree in submenus and use selectionModel
instead of currentIndex for retrieving the selected item in the tree.
|
|
|
|
| |
Introduce SmGlobals::iconFor to retrieve the configured item.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
Again, split the editor into a widget and a dialog, so we can use the
widget in NewMovieWizard.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Split MappingEditor into a Dialog and the actual MappingEditorWidget.
Turns out that we need the Widget in NewMovieWizard, also. No need for
code duplication.
NB: Before this I tried to convert the WizardTreeModel to a
QStandardItemModel, but it had severe performance problems. Most likely
I would have ended up subclassing QStandardItemModel anyway, so leave it
as it is.
|
| |
|
|
|
|
|
| |
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, this is a huge commit. Should be severals, but who knew...
First and foremost feature: Make NewMovieWizard work with the
experimental model. This change obsoleted a lot of code. Also, the old
archive won't work with with the new Wizward...
There are most probably many other features I forgot about.
|
|
|
|
|
| |
* 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
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|