| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
If USB-Storage is mounted and available, search it for already archived
movies. If found, play it.
|
|
|
|
|
| |
Delete the original file if we converted a pic to PNG, but only if the
database transaction succeeded.
|
|
|
|
|
|
|
|
|
|
| |
Automatically converting a damaged file to PNG and updating the archive
is fine as long as we're *in* the archive, but it totally messes things
up if we're browsing the file system.
So check if the image is in the archive path, and only then consider
auto-converting it. Also show a notice in the InfoItem if the file has
been converted.
|
|
|
|
|
| |
Use ImageMagick::Image::ping to determine the size of an image, but only
if the file size is < 400kb to prevent the impression of a deadlock.
|
|
|
|
|
|
|
|
| |
Well, seems that's Qt's ImageReader got pickier regarding jpeg-files. If
the resulting QPixmap is null and void, try to convert them to png.
This introduces a new dependency to ImageMagic++. I don't like it, but
it works, kinda... I saw random crashes while testing...
|
|
|
|
|
|
| |
* Change fixed width front from "courier" to "Monospace"
* Remove foregroundcolor from SmTreeItem. Wasn't used nor needed, quite
the opposite: it made SheMov deviate from the default style.
|
|
|
|
|
|
|
|
|
|
|
| |
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...)
|
|
|
|
|
|
| |
* Show time when snapshot was taken.
* Align the snapshots properly.
* Show BusyCursor when generating preview.
|
|
|
|
|
|
| |
* Show and archive size of pictures
* Fix SqlQueries in PicFilesModel: removeFiles and changeMappings
* use delegate in PictureView
|
|
|
|
| |
Show 4 frames of the selected movie in PictureViewer2.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
* Save header states
* Implement delegates for columns
* unify size and duration to 1 column
* colorize View
... and lots of other things I forgot :)
|
|
|
|
|
| |
Show total duration of selected Movies in FileView. Created a new class
Helper::Duration for this and declared it as QMetaType.
|
|
|
|
| |
Don't crash harder on read failure :)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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...
|
|
|
|
|
|
|
|
| |
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...
|
|
|
|
|
|
|
|
| |
* Change #include to qt5
* Fix missing QX11Info
* use explicit constructor for QVariant(QColor)
* use beginResetModel() and endResetModel() instead of reset(). The
latter was removed. Hopefully it still works :)
|
|
|
|
|
|
|
|
| |
Several bug fixes on the way:
* set fixed size policy for PictureViewer2 -> makes resizing much easier
* don't set Y-offset when showing a pic. The scene takes care of it
* don't deliver SIGNAL configChanged() twice to PictureViewer2
* center Widget on current screen when calling Helper::centerWidget
|
|
|
|
|
|
|
| |
Try to get the position of the current picture after adding and clearing
the file list of PictureViewer2. While thinking of using std::find for
this I realized that the operator()-functions in Helper:: weren't used
any more, so remove them and the <algorithm> includes.
|
|
|
|
| |
Make mkv detection more reliable.
|
|
|
|
|
|
| |
Finally NewPicsDialog actually does something. Added another parameter
to Helper::moveToArchive. If set to true, files will only be copied
instead of moved. Default is false, not changing the expected behavior.
|
|
|
|
|
|
| |
Since I'm now using a tiling window manager dialogs have to center
themselves on the screen. Otherwise they end up at QPoint(0,0). Not very
nice. Subclassed QDialog to SmDialog and converted all dialogs.
|
|
|
|
|
| |
Added a widget to display metadata beside actors and genres when
available
|
|
|
|
|
| |
Created a modes for metadata, revamped NewMovieWizard to use the model
and created a MetadataWidget to edit and display metadata.
|
|
|
|
|
|
|
|
|
|
|
| |
Allow operators in filter. Operators are only valid if it's a
NumericQuery. Operators are <>=. Also allow postfixes for numbers: k, m,
g for kilobytes, megabytes and gigabytes.
Also fix a little usability bug when filtering. If the result set was
empty, the root item was collapsed. On the next search with a result,
the root item was still collapsed. Since it wasn't shown there was no
way to expand it.
|
|
|
|
|
|
|
|
|
| |
Implemetented a cache for hovering over movies, saving the pictures from
ffmpeg. For that SmGlobals got a new member *frameCache, handling all
the dirty file access.
I first tried to implement it as a helper, but that produced too much
duplicate code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
What started as an attempt to show a frame from a movie when hovering
over it, ended in a huge bugfix commit for hover related stuff. This
commit is definitely not atomic.
When hovering over a movie present on the filesytem a frame is shown.
The time frame is configurable. While digging into the code I noticed
some bugs.
Bugfixes:
* fix label for hove archive action. It was labeled for hovering over
directories in FSWidget.
* Hovering over directories didn't have an action. Also read the
appropriate value from QSettings.
Other:
* add icons for hovering over directories and hovering over movies
* replace SheMov::toggleHover(pics|some other) with a QSignalMapper
|
|
|
|
|
|
| |
Remove debug statements from FileSystemWidget. Also remove useless
helper func StringListContains. That was a goodie. I guess I was quite
drunk when I wrote that...
|
|
|
|
|
|
|
|
|
|
|
| |
Implemented a dialog for file properties. When the mime type says it's a
video, fork ffprobe to read the properties of all streams and show them
in a QTreeView powered by a SmTreeModel. If the mime type is image, use
QImage to read some properties and show them in the same dialog.
This commit introduces the new class FilePropertiesDialog. I also had to
implement a copy constructor for SmTreeItem. It obsoletes classes
ActorWidget, ActorModel and MoviePropertiesDialog.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The journey through the internals of SheMov started by fixing
SeriesTreeWidget::readSettings(). The selected index didn't really get
selected on startup because only QItemSelectionModel::setCurrendt() was
called. Replace it with QItemSelectionModel::select() and
QTreeView::setCurrent(). Also fix SeriesTreeWidget::writeSettings() to
only write selected items to QSettings() when something is selected.
While working on selections I realized that there is a serious bug in
Helper::moveToArchive. The destination directory in the archive must be
created if it doesn't exist. For a testcase I needed an easy way to move
files back from the archive to incoming directory, so I added
FilesTreeWiget::moveToDirectory(). This lets you move files from the
FilesTreeWidget to any directory. During testing I realized that
SeriesTreeWidget::deleteFromSeries() QMessageBox() doesn't show files
when deleting a series part. Fixed that by adding SeriesParts to file
list.
Finally a newly added SeriesPart gets selected and selected by expanding
it first and then calling QItemSelectionModel::select()
To make a long story short:
1. fix SeriesTreeWidget::{read,write}Settings
2. add FilesTreeWidget::moveToDirectory()
3. fix SeriesTreeWidget::deleteFromSeries() QMessageBox
4. fix selecting newly added SeriesParts
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Don't call an external program for showing a picture. When an image is
doubleclicked a new windows shows the picture. Pictures can still be
opened in an exteral program by using the "Open with..." context menu
item.
|
|
|
|
| |
Replaced calls to crypto++ with QCryptographicHash
|
|
|
|
|
|
|
| |
-Recognize matrovka containers as movies
git-svn-id: file:///var/svn/repos2/shemov/trunk@419 f440f766-f032-0410-8965-dc7d17de2ca0
|
|
|
|
|
|
|
|
|
|
| |
complicated)
-It's now possible to manually add a movie w/o a file
-Some usability fixes
git-svn-id: file:///var/svn/repos2/shemov/trunk@394 f440f766-f032-0410-8965-dc7d17de2ca0
|
|
|
|
|
|
|
|
|
|
| |
-get QModelIndex from MovieModel by movieId
-ArchiveView: added delegates for dvd and size, MovieItem now returns size as int
-Finished EditArchiveItemDialog
-Reverted covereditor, it became too convoluted
git-svn-id: file:///var/svn/repos2/shemov/trunk@393 f440f766-f032-0410-8965-dc7d17de2ca0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-Created an application icon and one for archives
-implemented database configuration dialog
-implemented listeditor
-implemented covereditor
-implemented md5sum helper
-implemented archivefilewidget
-Debugging spree: fixed SQL-statements and ListModel
git-svn-id: file:///var/svn/repos2/shemov/trunk@389 f440f766-f032-0410-8965-dc7d17de2ca0
|
|
-started implementing FilesystemView
git-svn-id: file:///var/svn/repos2/shemov/trunk@377 f440f766-f032-0410-8965-dc7d17de2ca0
|