diff -Nru kphotoalbum-4.6.1/AndroidRemoteControl/ImageStore.cpp kphotoalbum-4.6.2/AndroidRemoteControl/ImageStore.cpp --- kphotoalbum-4.6.1/AndroidRemoteControl/ImageStore.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AndroidRemoteControl/ImageStore.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -49,7 +49,7 @@ QTimer* timer = new QTimer; timer->setSingleShot(true); - // There seems to be a path throught QML where the client is deleted right after this request is send, + // There seems to be a path through QML where the client is deleted right after this request is send, // therefore, have client as the third parameter to the connect below, as that will prevent the request in that setup. connect(timer, &QTimer::timeout, client, [imageId,size,type,timer,client, this] () { ThumbnailRequest request(imageId, size, type); diff -Nru kphotoalbum-4.6.1/AndroidRemoteControl/main.cpp kphotoalbum-4.6.2/AndroidRemoteControl/main.cpp --- kphotoalbum-4.6.1/AndroidRemoteControl/main.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AndroidRemoteControl/main.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -47,7 +47,7 @@ qmlRegisterType("KPhotoAlbum", 1, 0, "RemoteImage"); qmlRegisterType("KPhotoAlbum", 1, 0, "MyImage"); - qmlRegisterUncreatableType("KPhotoAlbum", 1, 0, "Enums","Dont create instances of this class"); + qmlRegisterUncreatableType("KPhotoAlbum", 1, 0, "Enums","Don't create instances of this class"); QQmlContext* rootContext = viewer.engine()->rootContext(); rootContext->setContextProperty(QStringLiteral("_remoteInterface"), &RemoteInterface::instance()); diff -Nru kphotoalbum-4.6.1/AndroidRemoteControl/qml/Icon.qml kphotoalbum-4.6.2/AndroidRemoteControl/qml/Icon.qml --- kphotoalbum-4.6.1/AndroidRemoteControl/qml/Icon.qml 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AndroidRemoteControl/qml/Icon.qml 2015-05-19 17:31:07.000000000 +0000 @@ -31,7 +31,7 @@ Column { id: column anchors {left: parent.left; right: parent.right} - spacing: 10 // Value used in ScreenInfo::iconHeight, so update there too if chaning the value. + spacing: 10 // Value used in ScreenInfo::iconHeight, so update there too if changing the value. MyImage { image: root.icon scale: iconScale diff -Nru kphotoalbum-4.6.1/AnnotationDialog/CompletableLineEdit.cpp kphotoalbum-4.6.2/AnnotationDialog/CompletableLineEdit.cpp --- kphotoalbum-4.6.1/AnnotationDialog/CompletableLineEdit.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AnnotationDialog/CompletableLineEdit.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2010 Jesper K. Pedersen +/* Copyright (C) 2003-2015 Jesper K. Pedersen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -123,12 +123,19 @@ /** * Search for the first item in the appearance order, which matches text. */ -QTreeWidgetItem *AnnotationDialog::CompletableLineEdit::findItemInListView( const QString& text ) +QTreeWidgetItem* AnnotationDialog::CompletableLineEdit::findItemInListView(const QString& text) { - for ( QTreeWidgetItemIterator itemIt( m_listView ); *itemIt; ++itemIt ) { - if ( itemMatchesText( *itemIt, text ) ) + for (QTreeWidgetItemIterator itemIt(m_listView); *itemIt; ++itemIt) { + // Hide the "untagged image" tag from the auto-completion + if ((*itemIt)->isHidden()) { + continue; + } + + if (itemMatchesText(*itemIt, text)) { return *itemIt; + } } + return nullptr; } @@ -205,8 +212,9 @@ selectItemAndUpdateLineEdit( item, itemStart, text().left( selectionStart() ) ); } -void AnnotationDialog::CompletableLineEdit::selectItemAndUpdateLineEdit( QTreeWidgetItem* item, - const int itemStart, const QString& inputText ) +void AnnotationDialog::CompletableLineEdit::selectItemAndUpdateLineEdit(QTreeWidgetItem* item, + const int itemStart, + const QString& inputText) { m_listView->setCurrentItem( item ); m_listView->scrollToItem( item ); diff -Nru kphotoalbum-4.6.1/AnnotationDialog/ListSelect.cpp kphotoalbum-4.6.2/AnnotationDialog/ListSelect.cpp --- kphotoalbum-4.6.1/AnnotationDialog/ListSelect.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AnnotationDialog/ListSelect.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -139,24 +139,36 @@ void AnnotationDialog::ListSelect::slotReturn() { - if ( isInputMode() ) { - QString txt = m_lineEdit->text().trimmed(); - if ( txt.isEmpty() ) + if (isInputMode()) { + QString enteredText = m_lineEdit->text().trimmed(); + if (enteredText.isEmpty()) { return; + } - m_category->addItem( txt); - rePopulate(); + if (searchForUntaggedImagesTagNeeded()) { + if (enteredText == Settings::SettingsData::instance()->untaggedTag()) { + KMessageBox::information( + this, + i18n("The tag you entered is the tag that is set automatically for newly " + "found, untagged images (cf. Settings|Configure KPhotoAlbum..." + "|Categories|Untagged Images). It will not show up here as " + "long as it is selected for this purpose.") + ); + m_lineEdit->setText(QString()); + return; + } + } - QList items = m_treeWidget->findItems(txt, Qt::MatchExactly, 0); + m_category->addItem(enteredText); + rePopulate(); - if (!items.isEmpty()) { + QList items = m_treeWidget->findItems(enteredText, Qt::MatchExactly, 0); + if (! items.isEmpty()) { items.at(0)->setCheckState(0, Qt::Checked); - if (m_positionable) { emit positionableTagSelected(m_category->name(), items.at(0)->text(0)); } - } - else { + } else { Q_ASSERT(false); } @@ -536,13 +548,22 @@ hideUntaggedImagesTag(); } -void AnnotationDialog::ListSelect::hideUntaggedImagesTag() +bool AnnotationDialog::ListSelect::searchForUntaggedImagesTagNeeded() { if (! Settings::SettingsData::instance()->hasUntaggedCategoryFeatureConfigured()) { - return; + return false; } if (Settings::SettingsData::instance()->untaggedCategory() != category()) { + return false; + } + + return true; +} + +void AnnotationDialog::ListSelect::hideUntaggedImagesTag() +{ + if (! searchForUntaggedImagesTagNeeded()) { return; } @@ -551,7 +572,7 @@ Qt::MatchExactly | Qt::MatchRecursive, 0 ); - // Be sure not to crash here in case the config points to a non-existant tag + // Be sure not to crash here in case the config points to a non-existent tag if (matchingTags.at(0) == nullptr) { return; } diff -Nru kphotoalbum-4.6.1/AnnotationDialog/ListSelect.h kphotoalbum-4.6.2/AnnotationDialog/ListSelect.h --- kphotoalbum-4.6.1/AnnotationDialog/ListSelect.h 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AnnotationDialog/ListSelect.h 2015-05-19 17:31:07.000000000 +0000 @@ -108,6 +108,7 @@ void ensureAllInstancesAreStateChanged( QTreeWidgetItem* item ); private: // Functions + bool searchForUntaggedImagesTagNeeded(); void hideUntaggedImagesTag(); private: // Variables diff -Nru kphotoalbum-4.6.1/AnnotationDialog/ListViewItemHider.cpp kphotoalbum-4.6.2/AnnotationDialog/ListViewItemHider.cpp --- kphotoalbum-4.6.1/AnnotationDialog/ListViewItemHider.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AnnotationDialog/ListViewItemHider.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2010 Jesper K. Pedersen +/* Copyright (C) 2003-2015 Jesper K. Pedersen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -15,11 +15,17 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "ListViewItemHider.h" + +// Qt includes #include #include #include +#include + +// Local includes +#include "ListViewItemHider.h" #include "Utilities/AlgorithmHelper.h" +#include "ListSelect.h" using namespace Utilities; @@ -65,6 +71,16 @@ bool AnnotationDialog::ListViewTextMatchHider::shouldItemBeShown(QTreeWidgetItem *item ) { + // Be sure not to display the "untagged image" tag if configured + if (Settings::SettingsData::instance()->hasUntaggedCategoryFeatureConfigured()) { + if (Settings::SettingsData::instance()->untaggedCategory() + == dynamic_cast(item->treeWidget()->parent())->category()) { + if (item->text(0) == Settings::SettingsData::instance()->untaggedTag()) { + return false; + } + } + } + switch ( m_matchType ) { case AnnotationDialog::MatchFromBeginning: diff -Nru kphotoalbum-4.6.1/AnnotationDialog/ShowSelectionOnlyManager.cpp kphotoalbum-4.6.2/AnnotationDialog/ShowSelectionOnlyManager.cpp --- kphotoalbum-4.6.1/AnnotationDialog/ShowSelectionOnlyManager.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/AnnotationDialog/ShowSelectionOnlyManager.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2010 Jesper K. Pedersen +/* Copyright (C) 2003-2015 Jesper K. Pedersen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public diff -Nru kphotoalbum-4.6.1/ChangeLog kphotoalbum-4.6.2/ChangeLog --- kphotoalbum-4.6.1/ChangeLog 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/ChangeLog 2015-05-19 17:31:07.000000000 +0000 @@ -1,3 +1,19 @@ +====================== KPhotoalbum 4.6.2 released ====================== + +* Bugfix: Fixed several compilation issues for various distributions and/or gcc versions. + +* Bugfix: Fix month plural when formatting age. + +* UI: Show the number of trained faces on the Face management settings page. + +* Enhancement: Add AfterShot2 to open-raw.pl. + +* Change: Do the dbv6 update without asking the user. But create a backup of all (probably) changed + files before. Hopefully, this will be more (end-)user friendly and everybody gets a backup for + free :-) + +* Bugfix: Hide the "untagged image" tag also when typing in parts of it's name. + ====================== KPhotoalbum 4.6.1 released ====================== * UI: Moved the birth date dialog to the settings and added more functionality (typing the date diff -Nru kphotoalbum-4.6.1/DB/ImageInfo.cpp kphotoalbum-4.6.2/DB/ImageInfo.cpp --- kphotoalbum-4.6.1/DB/ImageInfo.cpp 2015-03-18 04:28:37.000000000 +0000 +++ kphotoalbum-4.6.2/DB/ImageInfo.cpp 2015-05-19 17:31:07.000000000 +0000 @@ -751,7 +751,7 @@ static QList fields; if (fields.isEmpty()) { - // the order here matters! we use the the named int constants afterwards to refer to them: + // the order here matters! we use the named int constants afterwards to refer to them: fields.append( new Exif::IntExifElement( "Exif.GPSInfo.GPSVersionID" ) ); // actually a byte value fields.append( new Exif::StringExifElement( "Exif.GPSInfo.GPSLatitudeRef" ) ); fields.append( new Exif::RationalExifElement( "Exif.GPSInfo.GPSLatitude" ) ); diff -Nru kphotoalbum-4.6.1/debian/changelog kphotoalbum-4.6.2/debian/changelog --- kphotoalbum-4.6.1/debian/changelog 2015-04-22 23:48:13.000000000 +0000 +++ kphotoalbum-4.6.2/debian/changelog 2015-05-26 12:12:26.000000000 +0000 @@ -1,3 +1,9 @@ +kphotoalbum (4.6.2-0ubuntu0.1~pmo1~utopic) utopic; urgency=medium + + * New upstream release. + + -- Pascal Mons Tue, 26 May 2015 8:12:26 -0400 + kphotoalbum (4.6.1-0ubuntu0.1~pmo1~utopic) utopic; urgency=medium * New upstream release. diff -Nru kphotoalbum-4.6.1/debian/patches/Fix_Compile_4_6_1_KLocale.patch kphotoalbum-4.6.2/debian/patches/Fix_Compile_4_6_1_KLocale.patch --- kphotoalbum-4.6.1/debian/patches/Fix_Compile_4_6_1_KLocale.patch 2015-04-22 23:48:13.000000000 +0000 +++ kphotoalbum-4.6.2/debian/patches/Fix_Compile_4_6_1_KLocale.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -Index: git/Settings/BirthdayPage.h -=================================================================== ---- git.orig/Settings/BirthdayPage.h 2015-03-19 21:31:33.688250061 +0100 -+++ git/Settings/BirthdayPage.h 2015-03-19 21:57:16.241719449 +0100 -@@ -33,6 +33,7 @@ - - // KDE classes - class KPageWidgetItem; -+class KLocale; - - namespace Settings - { diff -Nru kphotoalbum-4.6.1/debian/patches/series kphotoalbum-4.6.2/debian/patches/series --- kphotoalbum-4.6.1/debian/patches/series 2015-04-22 23:48:13.000000000 +0000 +++ kphotoalbum-4.6.2/debian/patches/series 2015-05-26 11:34:49.000000000 +0000 @@ -1,3 +1,3 @@ 01_docbook_xml.patch debug_kgeomap_search -Fix_Compile_4_6_1_KLocale.patch +#Fix_Compile_4_6_1_KLocale.patch diff -Nru kphotoalbum-4.6.1/doc/CMakeLists.txt kphotoalbum-4.6.2/doc/CMakeLists.txt --- kphotoalbum-4.6.1/doc/CMakeLists.txt 2015-03-18 04:31:53.000000000 +0000 +++ kphotoalbum-4.6.2/doc/CMakeLists.txt 2015-05-19 17:33:44.000000000 +0000 @@ -1,9 +1,9 @@ -add_subdirectory(sv) add_subdirectory(nl) add_subdirectory(pt) -add_subdirectory(en_US) add_subdirectory(pt_BR) -add_subdirectory(de) -add_subdirectory(it) add_subdirectory(uk) +add_subdirectory(it) add_subdirectory(fr) +add_subdirectory(sv) +add_subdirectory(de) +add_subdirectory(en_US) diff -Nru kphotoalbum-4.6.1/doc/pt_BR/introduction.docbook kphotoalbum-4.6.2/doc/pt_BR/introduction.docbook --- kphotoalbum-4.6.1/doc/pt_BR/introduction.docbook 2015-03-18 04:31:35.000000000 +0000 +++ kphotoalbum-4.6.2/doc/pt_BR/introduction.docbook 2015-05-19 17:33:29.000000000 +0000 @@ -69,7 +69,7 @@ >index.xml da sua pasta de topo das imagens. Este é um arquivo XML simples, para que o possa salvaguardar com as ferramentas que preferir, incluindo os utilitários de backup normais, a cópia para disquetes ou a manutenção num sistema de controle de versões com o VCS. Existe também um script de cópia de segurança (kpa-backup.sh) que vem no código do &kphotoalbum; e faz uma cópia do 'index.xml' e dos arquivos de configuração na pasta do usuário. +>) que vem no código do &kphotoalbum; e faz uma cópia do 'index.xml' e dos arquivos de configuração na pasta pessoal do usuário. O &kphotoalbum; irá recordar o local que você lhe indicou onde se localizam as suas imagens e irá utilizá-lo de novo nas sessões futuras do &kphotoalbum;. Se alguma vez precisar carregar outra base de dados no &kphotoalbum; (i.e. outra pasta com imagens), então poderá iniciá-lo com a opção