summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Dis/enable QActions for ContextMenuArno2013-07-126-10/+30
| | | | Handle actions dependent on type node.
* Always show subtitle in ArchiveModelArno2013-07-121-8/+6
|
* Make PartNo and Subtitle editableArno2013-07-126-0/+111
|
* Use MetadataEditorWidgetArno2013-07-122-112/+34
| | | | | Use MetadataEditorWidget in NewMovieWizard and test it. Works perfectly in NewMovieWizard and MetadataEditor.
* Split MetadataEditorArno2013-07-122-29/+56
| | | | | Again, split the editor into a widget and a dialog, so we can use the widget in NewMovieWizard.
* Use MappingEditorWidget in NewMovieWizardArno2013-07-124-15/+33
|
* Split MappingEditor into two classesArno2013-07-122-28/+67
| | | | | | | | | | | Split MappingEditor into a Dialog and the actual MappingEditorWidget. Turns out that we need the Widget in NewMovieWizard, also. No need for code duplication. NB: Before this I tried to convert the WizardTreeModel to a QStandardItemModel, but it had severe performance problems. Most likely I would have ended up subclassing QStandardItemModel anyway, so leave it as it is.
* Sort MappingEditor on the flyArno2013-07-102-3/+4
|
* Get rid of useless SimpleModel againArno2013-07-106-26/+20
| | | | | QStandardItemModel is much better than a poorly derived QStringListModel...
* Make experimental view editableArno2013-07-107-2/+477
| | | | | Create new dialogs for editing actors, genres and metadata. IMHO like this it's much clearer who does what. KISS!
* Fix alignment in file treeArno2013-07-091-1/+2
|
* Show actors, genres and metadata when selecting a seriesArno2013-07-096-7/+152
| | | | We're getting there, slowly, but steadily :)
* Fix crashes in SmDirWatcherArno2013-07-081-1/+2
| | | | | | | Finally! Return a copy of the file tree instead of the working item! Hopefully this fixes a lot of crashes. Threading is a bitch...
* Make new archive workArno2013-07-0813-465/+408
| | | | | | | | | | 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.
* Prevent duplicates in ArchiveTreeArno2013-07-071-3/+3
| | | | Well, select DISTINCT :)
* Implement actions for ArchiveFileViewArno2013-07-077-9/+249
| | | | | * make files double-clickable * implement edit actions for files
* Lots of Display ChangesArno2013-07-0611-36/+234
| | | | | | | | | * Save header states * Implement delegates for columns * unify size and duration to 1 column * colorize View ... and lots of other things I forgot :)
* Basic ArchiveFilesModel and ArchiveControllerArno2013-07-067-6/+310
| | | | | | | | | Implement a new file model for the archive. It's quite basic at this stage, but finally something happens when clicking the archive tree. Also, implement the interaction (signal -> slot) between the views and models in an explicit controller to prevent the mess from the old archive.
* Implement destructor for ArchiveModel, get rid of 2 signalsArno2013-06-283-6/+12
| | | | | | | | | | | We need a destructor for ArchiveModel, because we have to stop the collectors first. Otherwise there will be random crashes all over the place on exit when the Threads are destroyed while they're still running. Also, get rid of the signals collectorDone and collectorAboutToBeDone. The latter was unused, and the former can be replaced with QAbstractItemModel::modelReset.
* 2 minor improvents to ArchiveViewArno2013-06-262-0/+2
| | | | | * make it sortable * change the header when changing the sort order
* Fix behavior of view when refreshingArno2013-06-262-7/+33
| | | | | Cancel the collectors if they're still running. Otherwise we may get outdated results when refreshing the view after an update or delete.
* Fix random crashes in ArchiveCollectorArno2013-06-253-20/+55
| | | | | | | | | | | | This was a hard one, actually. Since we only returned a pointer from the ArchiveCollector, it worked _most_ of the time, but crashed at random when the view was reading the tree while the collector was updating it. So create a working copy constructor for SmRootItem and return a copy of the the tree when the collector is done. I bet that's also the reason for the random crashes in the filesystem view.
* Keep state of expanded itemsArno2013-06-235-16/+47
| | | | | Well, sounds easier as it is to keep track of expanded items, but finally I got it!
* Make the archive cache usefulArno2013-06-235-106/+49
| | | | | Read the cache if there is one, if not, read it in another thread and update the view when it's done.
* 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.