summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix renaming items, protect colletor-vars with MutexesArno2013-06-232-7/+25
| | | | | | | This should be 2 commits, really... Fix: write cache after renaming an item Protect: protect the accessors of ArchiveCollector with Mutexes
* Archive CacheArno2013-06-222-4/+107
| | | | | | | | | | | | | | | | Create a caches of database archive views. Esp. gathering data for actors takes a long time, and I don't see how to optimize the queries. So write them to a QDataStream. It was much more difficult that it sounds. Once again I was lost in recursion. Did I mention that I hate recursion? The solution: When writing use the address of the SMTreeItem cast to qint64 as unique key. On reading build a hash with the address as key and use it to find the parent of the next item. I hope that makes sense...
* Fix initialization of children in ArchiveModelArno2013-06-211-3/+3
| | | | | Child items of RootItem were initialized with 9 columns instead of 8 in ArchiveModel. Loose the stray QVariant()
* Filter recursiveArno2013-06-143-20/+48
| | | | | | | | | | | Well, well... Recursion isn't that bad at all. Filter experimental ArchiveView recursive by the following rules: * check children _and_ parents for filter * if any child _or_ parent matches, accept the current row, parents and children. The column is converted to a QString and matched by QRegExp, so don't try to match numbers or anything else.
* Remove nodesArno2013-06-036-5/+64
| | | | | Implement remove nodes for ArchiveView. Only empty nodes without children can be removed. Everything else is too dangerous :)
* Fix error message for ArchiveViewArno2013-06-023-2/+7
| | | | | | | While thinking about merging items, I realized that it is not necessary. Just edit the mappings instead. However, a fallout is an error function for the TreeView.
* Implement RenameArno2013-06-028-7/+130
| | | | Rename items: spits out an error message if the new item already exists.
* Remember expanded ItemsArno2013-06-025-1/+66
| | | | | For the current SortOrder the expanded items are written to the config file and read on startup.
* Gather archive data in a threadArno2013-06-016-64/+177
| | | | | Fetching data sometimes takes a long time, so do it in a QThread and show a progress dialog. Some kludges included :)
* Make filter work in new ArchiveViewArno2013-06-015-6/+100
| | | | | | | Filter by QRegExp, but only on the first level according to the sort order. All items are expanded when filtered. Also, remember the filter and the sort order when exiting.
* Don't clean up after ourselvesArno2013-06-015-17/+0
| | | | | Don't delete threads and stuff in destructors. It leads to SIGARBRT when debugging. Now we get a warning on close, but who cares?
* Do something when SortOrder is changed in ArchiveViewArno2013-06-013-30/+48
| | | | | | | | | Actually do something when the sort order is changed. That resulted in various fixes to both model and view, since both had completely untested codepaths. Most notable fix: Only select those seriesparts which are actually mapped to the selected genre or actor.
* Fix various display issues of ArchiveModelArno2013-06-016-11/+48
| | | | | | * Show childcount * Show subtitle or part no * Resize Widget properly
* Add view for new ArchiveModelArno2013-06-016-3/+125
| | | | Display the new ArchiveModel in an experimental tab
* Add new ArchiveModel to SmGlobalsArno2013-06-011-0/+5
|
* First draft of new ArchiveModelArno2013-06-014-3/+182
| | | | | | | | The new ArchiveModel allows sorting and display by the series name, actors and genres. Hopefully it's generic enough to easily add other sort orders like file location or file type. For now, it's just there. Not included anywhere. No view, no nothing.
* Another alignment fixArno2013-05-241-1/+2
| | | | Also align VCenter in filesystemfileproxy
* Fix display of free space in archiveArno2013-05-241-3/+2
| | | | Don't use scientific notation. Just qRound() the value.
* Fix alignment in FilesTreeModelArno2013-05-241-1/+2
| | | | Also align columns vertically when Qt:AlignRight is in effect.
* Possible Bugfix in MappingEditWidgetArno2013-04-111-2/+4
| | | | | | SheMov crashed in MappingEditWidget::removeMapping, maybe because of some race. So turn the selected QModelIndex into a PersistentModelIndex and check for validity before removing the row...
* Fix editing of MappingTreeModelArno2013-04-112-18/+60
| | | | | | Renaming/Editing of an item didn't work, because database restrictions hadn't been taken into account. tdescription_name is unique, so update the description_id if it already exists.
* Fix frame cacheDirArno2013-04-115-72/+46
| | | | | | | | | | Get rid of the cache file. Instead, generate the cache on startup. The cache was never written since it was turned into a thread. Because of that I wrote a cleanup function, but surprisingly it didn't have much impact on the startup time, so I dropped the cache file. Also, fix destructor of SmGlobals. Call deleteLater on all Q_OBJECTS, and of course, some header cleanup.
* Possible Bugfix for SmDirModelArno2013-04-111-0/+3
| | | | | | | 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...
* Fix setAlternatignRowColorsArno2013-04-1032-284/+119
| | | | | | | | | | | | | | | | | | | | Well, what started as a try to simplify QTreeView ended in a mass header murder... What happened: * I searched for a way to let every QTreeView honor the setAlternatingRowcolors() setting. Unfortunately it isn't enough to just set the global palette and set it to true. So every QTreeView is now derived from SmTreeView * SmTreeView registers itself with SmGlobals, so the property is set _after_ it's constructed. It's definitely not enough to call it in the constructor. I guess that's a bug. But it's enough to append the SmTreeView to a QList<QWidget*> in SmGlobals and call it _after_ the painting is done. * As an added Bonus we can add virt. funcs to every SmTreeView at will While at it I realized that most of the included headers were void, so remove them. No idea what impact it has on the bin size...
* Bugfix when setting DVD numberArno2013-04-072-3/+3
| | | | | | Don't call refresh on model after setting the dvd no for an index. Then the selection is lost and the other selected indexes won't be updated. Call refresh from the view after updating all indexes instead.
* Make check for present files configurableArno2013-04-063-1/+13
| | | | | Add a configuration option for checking the database when browsing the filesystem.
* SmDirModel: check if file already is in databaseArno2013-04-065-7/+65
| | | | | Indicate if we already have a file by coloring the filename darkGreen when browsing the filesystem.
* Put duration and size in one Field (SmDirModel)Arno2013-04-067-28/+26
| | | | | Consolidate duration and size in one Field, like in the archive, to be consistent. Also rename the Role and Field accordingly.
* Remove function fileData from SmDirModelArno2013-04-062-20/+0
| | | | It's a leftover. Data is collected by SmDataCollector.
* Show pic size in SmDirModelArno2013-04-066-12/+29
| | | | | | If file is an image, grab the size and add it to the model. Also, remove some leftover debug statements from SmTreeView.
* New Class: SmTreeViewArno2013-04-0512-148/+118
| | | | | | | | | | Code reusage: all 3 tabs had the same funtions: readHeaderConfig, writeHeaderConfig and toggleHeader, so turn it into a class derived from QTreeView. Unfortunately mATree didn't do things as later added Views, so it took some time to find the culprit in SheMov::readSettings :( Hopefully I didn't break too much...
* Make FilesystemWidget headers configurableArno2013-04-055-2/+56
| | | | | Save headerView on exit, create a Menu for selecting headers and read headerConfig on startup.
* Make FrameCache threadedArno2013-03-298-150/+254
| | | | | create snapshot pics in a separate thread. Also use the first frame available if the clip isn't long enough for the configured frame.
* Set NoEditTriggers on FileViewArno2013-03-291-0/+1
| | | | Don't open an editor in FileView when doubleclicking a file.
* Fix TODOArno2013-03-231-59/+1
| | | | Push it back to reality :)
* New SplashArno2013-03-224-3/+3
| | | | | Create new splash screen from Kimber James. She's so hot! While at it, change the Domain...
* CleanupArno2013-03-221-5/+0
| | | | Remove some unused QActions from SheMov
* Drop Window placementArno2013-03-222-16/+4
| | | | | Drop all the stuff placing the window somewhere. I'm using a tiling window manager :)
* Show duration in statusBarArno2013-03-227-4/+94
| | | | | Show total duration of selected Movies in FileView. Created a new class Helper::Duration for this and declared it as QMetaType.
* Add explicit refresh for FileViewArno2013-03-222-0/+10
| | | | | Since we have SmDirModel now, we can explicitly refresh the view, eventually!
* Remember selections on FileModel resetArno2013-03-224-3/+43
| | | | | | Since can reset the FileView through a time, remember the selections on reset and restore them after. The Timer is stopped when an item is being edited.
* Another fix for Helper::md5sumArno2013-03-211-1/+5
| | | | Don't crash harder on read failure :)
* Implement auto refreshArno2013-03-215-0/+39
| | | | | Since inotify isn't completely implemented for cifs mounts, implement auto refresh for FileView. Default is 5 seconds.
* Final inotify!Arno2013-03-218-102/+127
| | | | | | | | | | | | | | | | | | | | 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...
* Use a Thread for collecting file dataArno2013-03-206-52/+135
| | | | | | 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.
* Revert fix for selectAllPVArno2013-03-201-1/+1
| | | | | | 4969cdba731671df80df951543dc47c4e52d70de "fixed" QFileSystemModel::FilePathRole for that function. We're actually querying the DirModel, unfix it.
* Auto resize FileViewArno2013-03-206-6/+24
| | | | | Automatically resize FileView when it changes. I guess I was quite drunk on the first try. Fortunately I didn't commit it :)
* Remove markAsSeenArno2013-03-176-85/+2
| | | | Wasn't used anyway, dropped DB-Table seen also.
* Fix ColorsArno2013-03-1715-15/+53
| | | | | | | This is more a qt5-fix than a SmDirModel fix. The global palette doesn't propagate any more, so we have to set the palette in every QTreeView separately. Very annoying and tedious. Maybe I missed a Widget or two, dunno...
* Fix NewPicsDialogArno2013-03-171-1/+1
| | | | another QFilesystemModel:: fix. Use SmDirModel instead.