| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Get rid of FilesystemWidget and helper classes. The SmDirWatcher was
useful, once, I guess, nice to implement it by foot, but with the
current workflow it isn't needed any more.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't access FileName in constructWindowTitle when we don't have a file
at mCurPos. That's what crashed us randomly!
Also (yes, I know, should be a separate commit) fix warnings about
implicit fallthru's in switch statements. The one in SmDirModel actually
was a bug, the one in tabChanged is just a nuisance.
Also (again), shuffle header inclusion in SmGlobals so Xlib and QT don't
clash.
|
|
|
|
|
| |
Update free space when we get an inotify event that changes disk space,
or when refresh is called.
|
|
|
|
|
|
| |
This was a hard one. SmDirWatcher raced against the model. Stop and quit
the watcher before actually deleting files. That can take a while if
file operations are in progress, so show the busy cursor.
|
|
|
|
|
|
|
|
|
| |
Get rid of the progress Dialog in the filesystem widget and replace it
with Qt::WaitCursor. While at it, show the waitcursor in the picture
widget, too.
Also remove the annoying warnings from ImageMagick by defining the
missing constants.
|
|
|
|
|
|
| |
They don't play nice together. Crap... AutoRefresh should be a thread,
but that opens another shebang of problems, I guess. So don't show the
dialog for now.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* remove debug statements from SmDirWatcher
* Don't crash on parentDir when current Dir is already deleted
* Fix PicFilesModel MappingQuery. It needlessly referenced the table
pics in FROM causing an expensive full table scan!
* Fix findRecursive in PicFilesModel: Stupid typo!
* Give SmDirWatcher a separate DB-Connection. One Thread, one Connection
* Remove several includes
This should have been 6 commits, but that's how debugging works :(
|
|
|
|
|
|
| |
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!
|
|
|
|
|
| |
Use a dialog for renaming files. Craptastic. Dunno why just calling the
editor doesn't work any more, but that's life...
|
|
|
|
|
| |
Don't emit needResize after every model SmDirModel-change. It freezes
the GUI. Let the user decide -> add a QAction to the toolBar.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sometimes there was a warning that a thread was being destroyed while
still running. This was SmDirWatcher::run(). read() blocks until new
data is ready, so run() never exited.
Fix it by poll()ing the inotify_descriptor. Return immediately if no
data is ready.
Also fix a small memory leak. Delete ConsistencyChecker when the dialog
is destructed.
|
|
|
|
|
|
|
| |
Add a configuration Option to (de-)select expensive file operations.
That would be md5Summing and gathering the Bitrate/Duration.
That should help the performance on networked directories...
|
|
|
|
|
|
|
|
|
|
|
| |
Get rid of SmDataCollector and do its job in small, QRunnable tasks and
let QThreadPool manage the treads.
Works well with a local Filesystem. Yet to see how it works over
networked Filesystems.
Ah, before I forget: NEVER, EVER USE QPixmap in THREADS -> Random
crashes! (Yes, I know, it's documented...)
|
|
|
|
|
| |
This reverts commit 2cc92200386c55818cbe9bcb7d2e488170317d70.
Wrong, non-working solution for this problem.
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
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...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
Make icons configurable by:
* folders
* files
* series
* genres
* actors
Weed out old usage. New usage not yet implemented.
|
|
|
|
|
| |
Don't delete threads and stuff in destructors. It leads to SIGARBRT when
debugging. Now we get a warning on close, but who cares?
|
|
|
|
|
|
|
| |
Check for valid QModelIndex in dirEvent. It could very well be possible
that we get an invalid index from find(), especially when deleting or
modifying files. Maybe this fixes some unexplained crashes I wasn't able
to reproduce...
|
|
|
|
|
| |
Indicate if we already have a file by coloring the filename darkGreen
when browsing the filesystem.
|
|
|
|
|
| |
Consolidate duration and size in one Field, like in the archive, to be
consistent. Also rename the Role and Field accordingly.
|
|
|
|
| |
It's a leftover. Data is collected by SmDataCollector.
|
|
|
|
|
|
| |
If file is an image, grab the size and add it to the model.
Also, remove some leftover debug statements from SmTreeView.
|
|
|
|
|
| |
Show total duration of selected Movies in FileView. Created a new class
Helper::Duration for this and declared it as QMetaType.
|
|
|
|
|
| |
Since inotify isn't completely implemented for cifs mounts, implement
auto refresh for FileView. Default is 5 seconds.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A huge commit, I know, but it was definitely worth it! It makes the
homebrew FilesystemModel work! It's divided up into two threads:
1. The Watcher: it reacts on inotify events and dispatches them to:
2. The Collector: this thread gathers the data and emits the SIGNALS to
the the view.
Now we can actually refresh the View, not possible with
QFileSystemModel, and the data reloads in almost real time without
blocking the GUI.
Unfortunately this uncovered some bugs I had to fix:
1. Helper::md5sum: Don't crash if read fails with -1
2. SmTreeModel::addRow is broken. Even after 5h I couldn't figure out
how or why, so I brute forced it. Reset the moded when a file is added.
3. Get rid of a lot of unneeded #include's
I guess that's about it...
|
|
|
|
|
|
| |
blocking the GUI isn't nice, so use a separate Thread to gather all the
data for SmDirModel. Populating and changing directory works, but
modifying a file is most likely broken.
|
|
|
|
|
| |
Automatically resize FileView when it changes. I guess I was quite drunk
on the first try. Fortunately I didn't commit it :)
|
|
|
|
|
| |
Made Icons for SmDirModel configurable. For now it's folders, movies,
pictures and others.
|
|
|
|
| |
I think I got it working! It does what I want it to do :)
|
|
Gotta take a break here. Hopefully this will end up in a custom
QFilesystemModel, but I'm hitting so many bugs on the way. Some things
haven't worked for ages, I guess.
Anyway, the watcher doesn't do anythying right now, still fixing bugs...
|