| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
Prevent crash when trying to convert a file to png. This was a hard one.
After checking into detached QT-Containers I finally realized that
convertArchivefileToPng was the culprit, because ImageMagick::read
exited with an "Unsupported marker type 0x09" execption.
After some more investigation with convert, or magick convert these
days, I found out that they could be ignored. Yes, it's a big hammer,
but if it still fails after trying to convert, just return if still
don't have a valid image.
|
|
|
|
|
|
| |
Helper::picSize assumed that all data passed to it is a valid image and
thus crashed with an exception. Wrap it into try - catch and return
QVariant() when the pic is invalid.
|
|
|
|
|
| |
Use QString::arg() instead of ::snprintf because of a comiler truncation
warning.
|
|
|
|
|
| |
QCryptgraphicHash::addData() now expects an QByteArrayView instead of an
QByteArray, so please it...
|
|
|
|
|
|
|
|
|
| |
This is a huge commit. Changes:
* Obviously, make it compile
* Make it run (only scarcely tested)
* get rid of most of clang's warnings
Let's see what surprises are in store...
|
|
|
|
|
| |
ffmpeg returns a float in duration. QVariant::toInt() can't parse it (any
more?), so use toFloat() and static_cast it to int.
|
| |
|
|
|
|
|
| |
One more step to make it compile with Windows. And once again, it makes
the code much neater and more readable.
|
|
|
|
|
|
| |
Replace QPushButtons with a QToolbar and appropriate unicode symbols.
While at at, return from Helper::fuzzyCheck when the search string is
empty. Prevents false positives.
|
|
|
|
|
| |
While at it: They don't have to be members, so create them on the heap.
Also fix a nullptr warning.
|
|
|
|
|
| |
commit e5274f4c27f847bedaa910a84ed3468d1aba32e1 introduced a double
colon and removed leading zeros. Make snprintf pretty again.
|
|
|
|
|
|
|
|
| |
Add icons better suited for dark themes and don't draw an ellipse around
the letter when calling Helper::icon and use the theme's text color to
better match the desktop theme.
Just be a good tenant and respect the user's choices where applicable.
|
|
|
|
|
|
| |
Sprinkle some static_casts here and there and fix auto conversions. Also
introduce const ints for what to read for calculating the MD5-Sum of a
file... Seems to work fine.
|
| |
|
|
|
|
| |
Use Monospace only where applicable, mostly MD5Sum and numbers.
|
|
|
|
|
|
|
| |
Use it in the toolbar for FSWidge and hide the menuBar.
Change Helper::icon to accept different foreground colors and wether to
draw the ellipse.
|
|
|
|
| |
Also create a helper function to create separator actions.
|
|
|
|
|
|
| |
* add programmatically rendered icons
* make text Qt::black
* set rootIsDecorated to false
|
|
|
|
|
| |
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
|