| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Well, we cannot cache the Present attribute, because it can change
without our knowledge, when a movie file has been archived in the
meantime. Leave it in CachedFileData for now, but check it when we found
a cache entry.
While working on this, I realized that the Origin attribute is pretty
much useless, at least in its current form. countMd5() already checks
the origin table, and everything else was guesswork on the filename.
Also, it was an extra, quite expensive SQL-Query for every video file,
so remove it.
|
| |
|
|
|
|
|
| |
Only remove something from the view if deletion was successful. If it
was a file, try to remove it from the cache.
|
| |
|
|
|
|
|
|
|
|
|
| |
Since we already have the data, save it to speed up the start.
Surprisingly, the hardest part was to figure out how to use
QStandardPaths to find a location where to save the file. I went with
the semi-hardcoded path HomeLocation/.shemovcleaner, even though we're
on windows.
|
|
|
|
|
|
|
|
|
|
| |
Some data-gathering is quite expensive and requires a QProcess, like
getting the duration, so cache it in memory using QCache. Once the cache
is filled, the UI is much snappier.
This simplifies gatherData() a bit. It's still quite a long function,
but now it doesn't create the QStandardItems any more. I moved it to a
separate function.
|
|
|
|
|
|
| |
QFile::remove() fails when the read-only attribute is set. Turn out it
can be unset with QFile::setPermissions(QFile::ReadOther |
QFile::WriteOther). Try it when the initial call to remove() failed.
|
|
|
|
|
| |
Well, finally got this stuff to build anything again, even in the right
places. This is getting quite convoluted...
|
|
|
|
|
| |
Apparently that function is deprecated in Qt 5.10. As suggested, use
QFileInfo::birthTime() instead.
|
|
|
|
|
|
| |
Since the advent of lambdas as SLOTS the signal mapper is indeed useless
und overly complicated. Remove it due to a deprecation warning from the
compiler.
|
|
|
|
|
|
|
|
|
|
| |
Wow, what a mess! Tried to update QT with this installer thingy, but
that wreaked total havoc. I installed several compilers and QT versions,
but most of the time QtCreator marked the QT header files as missing.
Long story short: In the end I removed everyting, downloaded the online
installer and "did it again". This commit fixes some paths in the build
scripts.
|
|
|
|
|
|
|
|
| |
According to the documentation it should be faster, but it also has its
drawbacks. We can't use the progressbar any more, because we don't know
how many files we're going to get. Show the number of files in the
statusMessage instead, and show the total size of analyzed files in GB
when we're done.
|
|
|
|
|
| |
Also keep sort order and column while gathering data. Disable sorting
while populating the model.
|
|
|
|
|
|
|
|
|
|
| |
This was a bit more complicated than thought. Just calling
writeHeaderData unconditionally doesn't work, because it saves the
headers on startup, when the widget isn't visible yet, so all columns
have the same width. Fix it by checking if we're visible first.
That almost worked. Almost, because after startup some columns had a
different height! Setting uniformRowHeights() to true helped.
|
|
|
|
|
| |
Just as before: delete the files and remove them from the view without a
full parse.
|
|
|
|
| |
Just move the files and remove them from the view without a full parse.
|
|
|
|
|
|
| |
QDir has a function removeRecursively(). Use that instead of a homebrew
implementation. Don't gatherData() after that, just remove the deleted
items from the view.
|
| |
|
|
|
|
| |
Don't std::bad_alloc if we have an invalid string.
|
|
|
|
| |
No need for anything else. Regexes are enough for everyone!
|
|
|
|
| |
Yippie! It finally does something!
|
|
|
|
| |
Yay! Still does nothing!
|
|
|
|
| |
Does nothing yet, just the GUI, connections and actions...
|
|
|
|
|
|
| |
Unfortunately there is no Postgres equivalent for \Q \E, so the query
didn't work with filenames containing e.g. () or []. Use LIKE instead
and see when that comes back to haunt me :)
|
|
|
|
|
| |
We don't have support for recursive copies, and I'm not really sure if
we need it, so don't do it for now.
|
|
|
|
|
| |
Show how many files we have, and display the transfer rate in Megabytes
per second. Can't believe that it worked right from the start :)
|
|
|
|
| |
Elide the text if necessary. Only show the destination directory.
|
|
|
|
|
| |
Make it fixed width, show only the filename from the source instead of
the full path and elide text if necessary.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Create a FileCopier and show a custom, non-modal progress dialog when
we're copying files.
Turns out that a QProgressDialog always shows when it's created. This is
by design, so I had to implement one that fits my needs.
Also, a buffer size of 32K (as used in MKVMerger) is way too small to
max out the available bandwidth, so I set it to an (arbitrary) value of
16MB.
|
|
|
|
| |
Does nothing yet. There's no slot for the actions.
|
|
|
|
| |
...instead of the calling functions to make it more consistent.
|
|
|
|
|
|
| |
Add a new column to FileWidget to indicate the copy status: Use the
gender sign for male (blue) to indicate that the file was found and the
sign for female (red) that it was not.
|
|
|
|
|
|
| |
Copy dirs are destination directories for copy operations. They will be
used later on to copy files or to check if a file has already been
copied.
|
| |
|
|
|
|
|
|
| |
Grab 4 frames from a video and display them in the Viewer. First frame
is @00:01:00, last at length - 1 minute, and the other two are in
between: length / 4 * 2 and 3 (hardcoded).
|
| |
|
| |
|
|
|
|
| |
looks ugly!
|
|
|
|
| |
Opens on doubleclick when it's image/*.
|
|
|
|
| |
Set window title to Tabname and dir if the current tab is changed.
|
|
|
|
| |
Red is used, green is free, obviously...
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since SheMov now displays origin files (i.e. source files for a
reencode), add an option here to add origin files for already archived
movies.
We guess the archived movie from the filename by cutting off the
extension and look it up in the files table.
If we find an archived movie with that filename, mark the source blue.
Deactive "Add" if we don't find one or if we already have an origin.
|
|
|
|
| |
Put Back and Up actions on top so we feel like a web browser.
|
|
|
|
|
| |
Corner case: Don't crash if Lists or Dictionaries end at EOF. Check if
mPos is still in range.
|
|
|
|
|
| |
It's perl, because neither Powershell nor cmd.exe can do this
without jumping through too many loops... :(
|
|
|
|
| |
And fix it for a perl build script...
|
|
|
|
|
| |
Remember selected items after refreshing the torrent view. Also
correctly! select the first torrent on startup.
|
|
|
|
| |
Don't care if it's the same file...
|
|
|
|
| |
Impose an arbitrary timeout of 10 seconds on status bar messages.
|
|
|
|
|
| |
Guess the subtitle from the torrent filename. It's more or less an
arbitrary set of strings and regexes that can't be configured.
|