{"action":"opened","number":1693,"pull_request":{"url":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/1693","id":216028430,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE2MDI4NDMw","html_url":"https://github.com/Subsurface-divelog/subsurface/pull/1693","diff_url":"https://github.com/Subsurface-divelog/subsurface/pull/1693.diff","patch_url":"https://github.com/Subsurface-divelog/subsurface/pull/1693.patch","issue_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues/1693","number":1693,"state":"open","locked":false,"title":"Dive media: on import read metadata only once","user":{"login":"bstoeger","id":32835590,"node_id":"MDQ6VXNlcjMyODM1NTkw","avatar_url":"https://avatars3.githubusercontent.com/u/32835590?v=4","gravatar_id":"","url":"https://api.github.com/users/bstoeger","html_url":"https://github.com/bstoeger","followers_url":"https://api.github.com/users/bstoeger/followers","following_url":"https://api.github.com/users/bstoeger/following{/other_user}","gists_url":"https://api.github.com/users/bstoeger/gists{/gist_id}","starred_url":"https://api.github.com/users/bstoeger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bstoeger/subscriptions","organizations_url":"https://api.github.com/users/bstoeger/orgs","repos_url":"https://api.github.com/users/bstoeger/repos","events_url":"https://api.github.com/users/bstoeger/events{/privacy}","received_events_url":"https://api.github.com/users/bstoeger/received_events","type":"User","site_admin":false},"body":"On import of dive media, the timestamp is read from the\r\nmetadata to check if the image belongs to the selected dives.\r\nThe pictures are then listed in a dialog.\r\n\r\nCurrently, the metadata is read twice if images are outside\r\nof a dive: once in picture_check_valid() and if it turns\r\nout that the picture is not valid again in picture_get_time()\r\nto display the proper timestamp.\r\n\r\nEven though metadata-extraction is reasonably fast, this is\r\na bit of an embarrassment.\r\n\r\nInstead, read the timestamps only once in the constructor of\r\nthe dialog and from then on only used these timestamps. Keep\r\nthe timestamps in a QVector. Rename the picture_check_valid()\r\nfunction to picture_check_valid_time() and pass a timestamp\r\ninstead of a filename.\r\n\r\nSigned-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>\r\n\r\n<!-- Lines like this one are comments and will not be shown in the final output. -->\r\n<!-- Make sure that you have read the \"Contributing\" section of the README and also the notes in CodingStyle. -->\r\n<!-- If you are a collaborator, please add labels and assign other collaborators for a review. -->\r\n\r\n### Describe the pull request:\r\n<!-- Replace [ ] with [x] to select options. -->\r\n- [ ] Bug fix\r\n- [ ] Functional change\r\n- [ ] New feature\r\n- [x] Code cleanup\r\n- [ ] Build system change\r\n- [ ] Documentation change\r\n- [ ] Language translation\r\n\r\n### Pull request long description:\r\n<!-- Describe your pull request in detail. -->\r\nThis is a code-cleanup, which could be considered a borderline bug-fix. We read the metadata of images outside of dives twice. [Actually thrice, since once imported the metadata are read again]. In the dive-shift dialog only read the metadata once in the constructor and then access the timestamp from a `QVector`\r\n\r\n### Changes made:\r\n<!-- Enumerate the changes with 1), 2), 3) etc. -->\r\n<!-- Ensure the test cases are updated if needed. -->\r\n1) Rename `picture_check_valid` to `picture_check_valid_time()` and pass a timestamp instead of a filename.\r\n2) Read metadata in the constructor of `ShiftImageTimesDialog` and remember the timestamps in a `QVector`\r\n\r\n### Related issues:\r\n<!-- Reference issues with #<issue-num>. -->\r\n<!-- Write \"Fixes #<issue-num\" to notify Github that this PR fixes an issue. -->\r\n\r\n### Additional information:\r\n<!-- Include sample dive log or other relevant information to allow testing the change where feasible. -->\r\n\r\n### Release note:\r\n<!-- Describe if this change needs a release note present in CHANGELOG.md. -->\r\n<!-- Also, please make sure to add the release note on top of the file CHANGELOG.md. -->\r\nToo trivial. Not needed.\r\n### Documentation change:\r\n<!-- If this PR makes changes to user functionality, then the documentation has to be updated too. -->\r\n<!-- Please, briefly outline here what has changed in terms of the user experience (UX). -->\r\n<!-- If UX changes have been made, a maintainer should apply the 'needs-documentation-change' label. -->\r\nNot needed.\r\n### Mentions:\r\n<!-- Mention users that you want to review your pull request with @<user-name>. Leave empty if not sure. -->\r\n","created_at":"2018-09-17T15:45:17Z","updated_at":"2018-09-17T15:45:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/1693/commits","review_comments_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/1693/comments","review_comment_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues/1693/comments","statuses_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/statuses/ddb0c40d74d23b3d77b7b97d93ebe72c6fb0dabf","head":{"label":"bstoeger:metadata3","ref":"metadata3","sha":"ddb0c40d74d23b3d77b7b97d93ebe72c6fb0dabf","user":{"login":"bstoeger","id":32835590,"node_id":"MDQ6VXNlcjMyODM1NTkw","avatar_url":"https://avatars3.githubusercontent.com/u/32835590?v=4","gravatar_id":"","url":"https://api.github.com/users/bstoeger","html_url":"https://github.com/bstoeger","followers_url":"https://api.github.com/users/bstoeger/followers","following_url":"https://api.github.com/users/bstoeger/following{/other_user}","gists_url":"https://api.github.com/users/bstoeger/gists{/gist_id}","starred_url":"https://api.github.com/users/bstoeger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bstoeger/subscriptions","organizations_url":"https://api.github.com/users/bstoeger/orgs","repos_url":"https://api.github.com/users/bstoeger/repos","events_url":"https://api.github.com/users/bstoeger/events{/privacy}","received_events_url":"https://api.github.com/users/bstoeger/received_events","type":"User","site_admin":false},"repo":{"id":107111280,"node_id":"MDEwOlJlcG9zaXRvcnkxMDcxMTEyODA=","name":"subsurface","full_name":"bstoeger/subsurface","private":false,"owner":{"login":"bstoeger","id":32835590,"node_id":"MDQ6VXNlcjMyODM1NTkw","avatar_url":"https://avatars3.githubusercontent.com/u/32835590?v=4","gravatar_id":"","url":"https://api.github.com/users/bstoeger","html_url":"https://github.com/bstoeger","followers_url":"https://api.github.com/users/bstoeger/followers","following_url":"https://api.github.com/users/bstoeger/following{/other_user}","gists_url":"https://api.github.com/users/bstoeger/gists{/gist_id}","starred_url":"https://api.github.com/users/bstoeger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bstoeger/subscriptions","organizations_url":"https://api.github.com/users/bstoeger/orgs","repos_url":"https://api.github.com/users/bstoeger/repos","events_url":"https://api.github.com/users/bstoeger/events{/privacy}","received_events_url":"https://api.github.com/users/bstoeger/received_events","type":"User","site_admin":false},"html_url":"https://github.com/bstoeger/subsurface","description":"This is the official upstream of the Subsurface divelog program","fork":true,"url":"https://api.github.com/repos/bstoeger/subsurface","forks_url":"https://api.github.com/repos/bstoeger/subsurface/forks","keys_url":"https://api.github.com/repos/bstoeger/subsurface/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bstoeger/subsurface/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bstoeger/subsurface/teams","hooks_url":"https://api.github.com/repos/bstoeger/subsurface/hooks","issue_events_url":"https://api.github.com/repos/bstoeger/subsurface/issues/events{/number}","events_url":"https://api.github.com/repos/bstoeger/subsurface/events","assignees_url":"https://api.github.com/repos/bstoeger/subsurface/assignees{/user}","branches_url":"https://api.github.com/repos/bstoeger/subsurface/branches{/branch}","tags_url":"https://api.github.com/repos/bstoeger/subsurface/tags","blobs_url":"https://api.github.com/repos/bstoeger/subsurface/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bstoeger/subsurface/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bstoeger/subsurface/git/refs{/sha}","trees_url":"https://api.github.com/repos/bstoeger/subsurface/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bstoeger/subsurface/statuses/{sha}","languages_url":"https://api.github.com/repos/bstoeger/subsurface/languages","stargazers_url":"https://api.github.com/repos/bstoeger/subsurface/stargazers","contributors_url":"https://api.github.com/repos/bstoeger/subsurface/contributors","subscribers_url":"https://api.github.com/repos/bstoeger/subsurface/subscribers","subscription_url":"https://api.github.com/repos/bstoeger/subsurface/subscription","commits_url":"https://api.github.com/repos/bstoeger/subsurface/commits{/sha}","git_commits_url":"https://api.github.com/repos/bstoeger/subsurface/git/commits{/sha}","comments_url":"https://api.github.com/repos/bstoeger/subsurface/comments{/number}","issue_comment_url":"https://api.github.com/repos/bstoeger/subsurface/issues/comments{/number}","contents_url":"https://api.github.com/repos/bstoeger/subsurface/contents/{+path}","compare_url":"https://api.github.com/repos/bstoeger/subsurface/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bstoeger/subsurface/merges","archive_url":"https://api.github.com/repos/bstoeger/subsurface/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bstoeger/subsurface/downloads","issues_url":"https://api.github.com/repos/bstoeger/subsurface/issues{/number}","pulls_url":"https://api.github.com/repos/bstoeger/subsurface/pulls{/number}","milestones_url":"https://api.github.com/repos/bstoeger/subsurface/milestones{/number}","notifications_url":"https://api.github.com/repos/bstoeger/subsurface/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bstoeger/subsurface/labels{/name}","releases_url":"https://api.github.com/repos/bstoeger/subsurface/releases{/id}","deployments_url":"https://api.github.com/repos/bstoeger/subsurface/deployments","created_at":"2017-10-16T10:11:10Z","updated_at":"2018-06-12T10:57:12Z","pushed_at":"2018-09-17T15:41:33Z","git_url":"git://github.com/bstoeger/subsurface.git","ssh_url":"git@github.com:bstoeger/subsurface.git","clone_url":"https://github.com/bstoeger/subsurface.git","svn_url":"https://github.com/bstoeger/subsurface","homepage":"https://subsurface-divelog.org","size":98260,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Subsurface-divelog:master","ref":"master","sha":"0845d71944e30ab95508bbf2ed51a6bbe381ff30","user":{"login":"Subsurface-divelog","id":24829199,"node_id":"MDQ6VXNlcjI0ODI5MTk5","avatar_url":"https://avatars1.githubusercontent.com/u/24829199?v=4","gravatar_id":"","url":"https://api.github.com/users/Subsurface-divelog","html_url":"https://github.com/Subsurface-divelog","followers_url":"https://api.github.com/users/Subsurface-divelog/followers","following_url":"https://api.github.com/users/Subsurface-divelog/following{/other_user}","gists_url":"https://api.github.com/users/Subsurface-divelog/gists{/gist_id}","starred_url":"https://api.github.com/users/Subsurface-divelog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Subsurface-divelog/subscriptions","organizations_url":"https://api.github.com/users/Subsurface-divelog/orgs","repos_url":"https://api.github.com/users/Subsurface-divelog/repos","events_url":"https://api.github.com/users/Subsurface-divelog/events{/privacy}","received_events_url":"https://api.github.com/users/Subsurface-divelog/received_events","type":"User","site_admin":false},"repo":{"id":2319498,"node_id":"MDEwOlJlcG9zaXRvcnkyMzE5NDk4","name":"subsurface","full_name":"Subsurface-divelog/subsurface","private":false,"owner":{"login":"Subsurface-divelog","id":24829199,"node_id":"MDQ6VXNlcjI0ODI5MTk5","avatar_url":"https://avatars1.githubusercontent.com/u/24829199?v=4","gravatar_id":"","url":"https://api.github.com/users/Subsurface-divelog","html_url":"https://github.com/Subsurface-divelog","followers_url":"https://api.github.com/users/Subsurface-divelog/followers","following_url":"https://api.github.com/users/Subsurface-divelog/following{/other_user}","gists_url":"https://api.github.com/users/Subsurface-divelog/gists{/gist_id}","starred_url":"https://api.github.com/users/Subsurface-divelog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Subsurface-divelog/subscriptions","organizations_url":"https://api.github.com/users/Subsurface-divelog/orgs","repos_url":"https://api.github.com/users/Subsurface-divelog/repos","events_url":"https://api.github.com/users/Subsurface-divelog/events{/privacy}","received_events_url":"https://api.github.com/users/Subsurface-divelog/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Subsurface-divelog/subsurface","description":"This is the official upstream of the Subsurface divelog program","fork":false,"url":"https://api.github.com/repos/Subsurface-divelog/subsurface","forks_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/forks","keys_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/teams","hooks_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/hooks","issue_events_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues/events{/number}","events_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/events","assignees_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/assignees{/user}","branches_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/branches{/branch}","tags_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/tags","blobs_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/git/refs{/sha}","trees_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/statuses/{sha}","languages_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/languages","stargazers_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/stargazers","contributors_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/contributors","subscribers_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/subscribers","subscription_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/subscription","commits_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/commits{/sha}","git_commits_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/git/commits{/sha}","comments_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/comments{/number}","issue_comment_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues/comments{/number}","contents_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/contents/{+path}","compare_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/merges","archive_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/downloads","issues_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues{/number}","pulls_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls{/number}","milestones_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/milestones{/number}","notifications_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/labels{/name}","releases_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/releases{/id}","deployments_url":"https://api.github.com/repos/Subsurface-divelog/subsurface/deployments","created_at":"2011-09-03T15:27:51Z","updated_at":"2018-09-17T15:43:01Z","pushed_at":"2018-09-17T15:45:18Z","git_url":"git://github.com/Subsurface-divelog/subsurface.git","ssh_url":"git@github.com:Subsurface-divelog/subsurface.git","clone_url":"https://github.com/Subsurface-divelog/subsurface.git","svn_url":"https://github.com/Subsurface-divelog/subsurface","homepage":"https://subsurface-divelog.org","size":98071,"stargazers_count":1430,"watchers_count":1430,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":362,"mirror_url":null,"archived":false,"open_issues_count":90,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":362,"open_issues":90,"watchers":1430,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/1693"},"html":{"href":"https://github.com/Subsurface-divelog/subsurface/pull/1693"},"issue":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues/1693"},"comments":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/issues/1693/comments"},"review_comments":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/1693/comments"},"review_comment":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/pulls/1693/commits"},"statuses":{"href":"https://api.github.com/repos/Subsurface-divelog/subsurface/statuses/ddb0c40d74d23b3d77b7b97d93ebe72c6fb0dabf"}},"author_association":"COLLABORATOR","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":1,"additions":16,"deletions":12,"changed_files":4}}
{"actor":{"display_login":"bstoeger"}}