| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
Don't enqueue anything if the INOTIFY_MASK doesn't match. Could be the
reason for random crashes...
|
|
|
|
|
|
|
|
| |
* cache: use qint64 consistently instead of quint64 once (typo, I guess)
* sync cancelling of ArchiveCollector: wait for it and reset the cancel
var
* sync access to cache file with QMutex
* don't set quality for pics
|
|
|
|
|
|
|
| |
* cast from double to int to insert seconds into the database
(newmoviewizard.cpp)
* update the database with the duration if the movie is local and we
don't have a duration
|
|
|
|
|
|
|
| |
I think I found the bug. We need to stop the refresh timer when
operating on the view, because it can reset the model while we're still
holding QModelIndexes. When that happens we're working with invalid
indexes and BOOM.
|
|
|
|
|
|
|
| |
This reverts commit 06cfadc8386aec27b9c7c43486fc0b057e9fb022.
Turns out that this was not the root cause for the crashes.
Still stumped.
|
|
|
|
|
|
|
| |
This stuff was racy from the beginning. It could happen that the model
got reset after we fetched the selected indexes. Add a mutex and lock it
before operating on the file view. Hopefully this will many, if not all
random crashes.
|
|
|
|
|
| |
NewMovieWizard never accepted more files than the model had columns due
to a misnamed function parameter. Doh!
|
|
|
|
| |
Only show series with files on the hd.
|
|
|
|
| |
Missed this one the first time...
|
|
|
|
|
|
|
|
| |
Show file properties in Filemanager and Archive, if the file is
available.
Also get rid of the palette stuff in SmGlobals. Just call setPalette()
early enough and set it in SmTreeView.
|
|
|
|
| |
Yeah, finally it's gone! Lot's of useless, unneeded code vanished :)
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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
|
|\
| |
| |
| |
| |
| | |
Conflicts:
shemov.cpp
shemov.h
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make icons configurable by:
* folders
* files
* series
* genres
* actors
Weed out old usage. New usage not yet implemented.
|
| |
| |
| |
| | |
Don't crash while setting metadata if nothing is selected.
|
| |
| |
| |
| |
| | |
I guess I was quite drunk when I designed this overengineered,
multithreaded monstrosity. Replace it with 4 nifty dialogs.
|
|/
|
|
|
| |
I guess I was quite drunk when I designed this overengineered,
multithreaded monstrosity. Replace it with 4 nifty dialogs.
|
|
|
|
|
| |
Use plpgsql functions to edit nodes. Makes the program logic much
easier. Also, rename rename() to edit() :)
|
|
|
|
| |
Handle actions dependent on type node.
|
| |
|
| |
|
|
|
|
|
| |
Use MetadataEditorWidget in NewMovieWizard and test it. Works perfectly
in NewMovieWizard and MetadataEditor.
|
|
|
|
|
| |
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 :)
|
|
|
|
|
|
|
| |
Finally! Return a copy of the file tree instead of the working item!
Hopefully this fixes a lot of crashes.
Threading is a bitch...
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
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.
|