[Digikam-devel] [Bug 115157] digikam usability: Image comments/tags dialog: hard to find/see all already selected tags (and to 'de'select them)
Gilles Caulier
caulier.gilles at kdemail.net
Wed Dec 20 19:30:35 GMT 2006
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=115157
------- Additional Comments From caulier.gilles kdemail net 2006-12-20 20:30 -------
SVN commit 615238 by cgilles:
digikam from trunk : second stage to optimize layout of Comments & Tags sidebar. Free space optimization, removing Tabs, and add "Apply" button.
CCBUGS: 115157
M +45 -62 imagedescedittab.cpp
M +1 -1 imagedescedittab.h
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.cpp #615237:615238
@ -24,10 +24,9 @
// Qt includes.
#include <qhbox.h>
+#include <qvbox.h>
#include <qlabel.h>
#include <qlayout.h>
-#include <qhgroupbox.h>
-#include <qvgroupbox.h>
#include <qheader.h>
#include <qtoolbutton.h>
#include <qpushbutton.h>
@ -49,7 +48,6 @
#include <kconfig.h>
#include <klineedit.h>
#include <kdialogbase.h>
-#include <ktabwidget.h>
// Local includes.
@ -78,12 +76,6 @
{
public:
- enum SettingsTab
- {
- DESCRIPTIONPAGE=0,
- TAGSPAGE
- };
-
ImageDescEditTabPriv()
{
modified = false;
@ -98,8 +90,8 @
ratingWidget = 0;
navigateBar = 0;
ABCMenu = 0;
- tab = 0;
assignedTagsBtn = 0;
+ applyBtn = 0;
}
bool modified;
@ -107,17 +99,16 @
QToolButton *recentTagsBtn;
QToolButton *tagsSearchClearBtn;
+ QToolButton *assignedTagsBtn;
QPopupMenu *ABCMenu;
- QPushButton *assignedTagsBtn;
+ QPushButton *applyBtn;
KTextEdit *commentsEdit;
KLineEdit *tagsSearchEdit;
- KTabWidget *tab;
-
KDateTimeEdit *dateTimeEdit;
ImageInfo *currInfo;
@ -134,44 +125,35 @
{
d = new ImageDescEditTabPriv;
- QVBoxLayout *vLayout = new QVBoxLayout(this);
- d->navigateBar = new NavigateBarWidget(this, navBar);
- d->tab = new KTabWidget(this);
+ QVBoxLayout *vLayout = new QVBoxLayout(this);
+ d->navigateBar = new NavigateBarWidget(this, navBar);
+ QWidget *settingsArea = new QWidget(this);
vLayout->addWidget(d->navigateBar);
- vLayout->addSpacing(KDialog::spacingHint());
- vLayout->addWidget(d->tab);
+ vLayout->addWidget(settingsArea);
- // Comments/Date/Rating view -----------------------------------
-
- QWidget *descriptionPage = new QWidget(d->tab);
- QGridLayout *settingsLayout = new QGridLayout(descriptionPage, 2, 1,
+ QGridLayout *settingsLayout = new QGridLayout(settingsArea, 5, 1,
KDialog::marginHint(), KDialog::spacingHint());
+
+ // Comments/Date/Rating view -----------------------------------
- QVGroupBox* commentsBox = new QVGroupBox(i18n("&Comments"), descriptionPage);
- d->commentsEdit = new KTextEdit(commentsBox);
+ QVBox *commentsBox = new QVBox(settingsArea);
+ new QLabel(i18n("Comments:"), commentsBox);
+ d->commentsEdit = new KTextEdit(commentsBox);
d->commentsEdit->setTextFormat(QTextEdit::PlainText);
d->commentsEdit->setCheckSpellingEnabled(true);
- QHGroupBox* dateTimeBox = new QHGroupBox(i18n("&Date && Time"), descriptionPage);
- d->dateTimeEdit = new KDateTimeEdit( dateTimeBox, "datepicker");
+ QHBox *dateBox = new QHBox(settingsArea);
+ new QLabel(i18n("Date:"), dateBox);
+ d->dateTimeEdit = new KDateTimeEdit(dateBox, "datepicker");
- QHGroupBox* ratingBox = new QHGroupBox(i18n("Rating"), descriptionPage);
- ratingBox->layout()->setAlignment(Qt::AlignCenter);
- d->ratingWidget = new RatingWidget(ratingBox);
+ QHBox *ratingBox = new QHBox(settingsArea);
+ new QLabel(i18n("Rating:"), ratingBox);
+ d->ratingWidget = new RatingWidget(ratingBox);
- settingsLayout->addMultiCellWidget(commentsBox, 0, 0, 0, 1);
- settingsLayout->addMultiCellWidget(dateTimeBox, 1, 1, 0, 1);
- settingsLayout->addMultiCellWidget(ratingBox, 2, 2, 0, 1);
- settingsLayout->setRowStretch(0, 10);
-
- d->tab->insertTab(descriptionPage, i18n("Description"), ImageDescEditTabPriv::DESCRIPTIONPAGE);
-
// Tags view ---------------------------------------------------
- QWidget *tagsPage = new QWidget(d->tab);
- QVBoxLayout *vLayout2 = new QVBoxLayout(tagsPage, KDialog::marginHint(), KDialog::spacingHint());
- QHBox* tagsSearch = new QHBox(tagsPage);
+ QHBox *tagsSearch = new QHBox(settingsArea);
tagsSearch->setSpacing(KDialog::spacingHint());
d->tagsSearchClearBtn = new QToolButton(tagsSearch);
@ -183,7 +165,7 @
d->tagsSearchEdit = new KLineEdit(tagsSearch);
d->tagsSearchEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum));
- d->assignedTagsBtn = new QPushButton(tagsSearch);
+ d->assignedTagsBtn = new QToolButton(tagsSearch);
QToolTip::add(d->assignedTagsBtn, i18n("Already Assigned Tags"));
d->assignedTagsBtn->setIconSet(kapp->iconLoader()->loadIcon("tag-assigned",
KIcon::NoGroup, KIcon::SizeSmall,
@ -200,24 +182,25 @
d->recentTagsBtn->setPopup(popupMenu);
d->recentTagsBtn->setPopupDelay(1);
- d->tagsView = new TAlbumListView(tagsPage);
+ d->tagsView = new TAlbumListView(settingsArea);
d->tagsView->addColumn(i18n("Tags"));
d->tagsView->header()->hide();
d->tagsView->setSelectionMode(QListView::Single);
d->tagsView->setResizeMode(QListView::LastColumn);
- vLayout2->addWidget(tagsSearch);
- vLayout2->addWidget(d->tagsView);
-
- d->tab->insertTab(tagsPage, i18n("Tags"), ImageDescEditTabPriv::TAGSPAGE);
-
// --------------------------------------------------
-
- KConfig* config = kapp->config();
- config->setGroup("Image Properties SideBar");
- d->tab->setCurrentPage(config->readNumEntry("Comments And Tags Tab",
- ImageDescEditTabPriv::DESCRIPTIONPAGE));
+ d->applyBtn = new QPushButton(i18n("Apply Changes"), settingsArea);
+ d->applyBtn->setEnabled(false);
+
+ settingsLayout->addMultiCellWidget(commentsBox, 0, 0, 0, 1);
+ settingsLayout->addMultiCellWidget(dateBox, 1, 1, 0, 1);
+ settingsLayout->addMultiCellWidget(ratingBox, 2, 2, 0, 1);
+ settingsLayout->addMultiCellWidget(d->tagsView, 3, 3, 0, 1);
+ settingsLayout->addMultiCellWidget(tagsSearch, 4, 4, 0, 1);
+ settingsLayout->addMultiCellWidget(d->applyBtn, 5, 5, 0, 1);
+ settingsLayout->setRowStretch(3, 10);
+
// --------------------------------------------------
connect(popupMenu, SIGNAL(activated(int)),
@ -258,7 +241,10 @
connect(d->assignedTagsBtn, SIGNAL(toggled(bool)),
this, SLOT(slotAssignedTagsToggled(bool)));
-
+
+ connect(d->applyBtn, SIGNAL(clicked()),
+ this, SLOT(slotApplyAllChanges()));
+
// Initalize ---------------------------------------------
d->commentsEdit->installEventFilter(this);
@ -318,12 +304,7 @
ImageDescEditTab::~ImageDescEditTab()
{
- applyAllChanges();
-
- KConfig* config = kapp->config();
- config->setGroup("Image Properties SideBar");
- config->writeEntry("Comments And Tags Tab", d->tab->currentPageIndex());
- config->sync();
+ slotApplyAllChanges();
/*
AlbumList tList = AlbumManager::instance()->allTAlbums();
@ -367,8 +348,7 @
AlbumList tList = AlbumManager::instance()->allTAlbums();
for (AlbumList::iterator it = tList.begin(); it != tList.end(); ++it)
{
- TAlbum* tag = (TAlbum*)(*it);
-
+ TAlbum *tag = (TAlbum*)(*it);
slotAlbumAdded(tag);
}
}
@ -376,6 +356,7 @
void ImageDescEditTab::slotModified()
{
d->modified = true;
+ d->applyBtn->setEnabled(true);
}
void ImageDescEditTab::assignRating(int rating)
@ -383,7 +364,7 @
d->ratingWidget->setRating(rating);
}
-void ImageDescEditTab::applyAllChanges()
+void ImageDescEditTab::slotApplyAllChanges()
{
if (!d->modified)
return;
@ -480,13 +461,14 @
}
d->modified = false;
+ d->applyBtn->setEnabled(false);
updateRecentTags();
}
void ImageDescEditTab::setItem(ImageInfo *info, int itemType)
{
- applyAllChanges();
+ slotApplyAllChanges();
if (!info)
{
@ -500,6 +482,7 @
setEnabled(true);
d->currInfo = info;
d->modified = false;
+ d->applyBtn->setEnabled(false);
KURL fileURL;
fileURL.setPath(d->currInfo->filePath());
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.h #615237:615238
@ -70,7 +70,6 @
private:
- void applyAllChanges();
void updateTagsView();
void updateComments();
void updateRating();
@ -86,6 +85,7 @
private slots:
+ void slotApplyAllChanges();
void slotModified();
void slotRightButtonClicked(QListViewItem *, const QPoint &, int);
void slotTagsSearchChanged();
More information about the Digikam-devel
mailing list