125
QToolButton *resetButton;
126
QToolButton *saveBtnSketch;
127
QToolButton *undoBtnSketch;
128
QToolButton *redoBtnSketch;
129
QToolButton *saveBtnImage;
132
QSpinBox *resultsSketch;
133
QSpinBox *levelImage;
142
KLineEdit *nameEditSketch;
143
KLineEdit *nameEditImage;
145
KTabWidget *tabWidget;
147
KHueSaturationSelector *hsSelector;
149
KColorValueSelector *vSelector;
151
KSqueezedTextLabel *labelFile;
152
KSqueezedTextLabel *labelFolder;
123
QToolButton* resetButton;
124
QToolButton* saveBtnSketch;
125
QToolButton* undoBtnSketch;
126
QToolButton* redoBtnSketch;
127
QToolButton* saveBtnImage;
130
QSpinBox* resultsSketch;
131
QSpinBox* levelImage;
140
KLineEdit* nameEditSketch;
141
KLineEdit* nameEditImage;
143
KTabWidget* tabWidget;
145
KHueSaturationSelector* hsSelector;
147
KColorValueSelector* vSelector;
149
KSqueezedTextLabel* labelFile;
150
KSqueezedTextLabel* labelFolder;
154
152
ImageInfo imageInfo;
156
SearchTextBar *searchFuzzyBar;
158
FuzzySearchFolderView *fuzzySearchFolderView;
160
SketchWidget *sketchWidget;
162
ThumbnailLoadThread *thumbLoadThread;
164
FindDuplicatesView *findDuplicatesPanel;
154
SearchTextBar* searchFuzzyBar;
156
FuzzySearchFolderView* fuzzySearchFolderView;
158
SketchWidget* sketchWidget;
160
ThumbnailLoadThread* thumbLoadThread;
162
FindDuplicatesView* findDuplicatesPanel;
166
164
AlbumPointer<SAlbum> imageSAlbum;
167
165
AlbumPointer<SAlbum> sketchSAlbum;
173
171
d->thumbLoadThread = ThumbnailLoadThread::defaultThread();
175
QWidget *panel = new QWidget(viewport());
176
panel->setAutoFillBackground(false);
178
173
setWidgetResizable(true);
179
174
setAttribute(Qt::WA_DeleteOnClose);
180
175
setAcceptDrops(true);
176
viewport()->setAcceptDrops(true);
178
// ---------------------------------------------------------------
180
QWidget *imagePanel = setupFindSimilarPanel();
181
QWidget *sketchPanel = setupSketchPanel();
182
d->findDuplicatesPanel = new FindDuplicatesView();
184
d->tabWidget = new KTabWidget();
185
d->tabWidget->insertTab(FuzzySearchViewPriv::SIMILARS, imagePanel, i18n("Image"));
186
d->tabWidget->insertTab(FuzzySearchViewPriv::SKETCH, sketchPanel, i18n("Sketch"));
187
d->tabWidget->insertTab(FuzzySearchViewPriv::DUPLICATES, d->findDuplicatesPanel, i18n("Duplicates"));
189
// ---------------------------------------------------------------
191
d->folderView = new KVBox();
192
d->fuzzySearchFolderView = new FuzzySearchFolderView(d->folderView);
193
d->searchFuzzyBar = new SearchTextBar(d->folderView, "FuzzySearchViewSearchFuzzyBar");
194
d->folderView->setSpacing(KDialog::spacingHint());
195
d->folderView->setMargin(0);
197
// ---------------------------------------------------------------
199
QWidget *mainWidget = new QWidget(this);
200
QVBoxLayout *mainLayout = new QVBoxLayout();
201
mainLayout->addWidget(d->tabWidget);
202
mainLayout->addWidget(d->folderView);
203
mainLayout->setMargin(0);
204
mainLayout->setSpacing(0);
205
mainWidget->setLayout(mainLayout);
207
setWidget(mainWidget);
208
setAutoFillBackground(false);
209
mainWidget->setAutoFillBackground(false);
181
210
viewport()->setAutoFillBackground(false);
182
viewport()->setAcceptDrops(true);
184
QVBoxLayout *vlay = new QVBoxLayout(panel);
185
d->tabWidget = new KTabWidget(panel);
187
// ---------------------------------------------------------------
188
// Find Similar Images Panel
190
QWidget *imagePanel = new QWidget(panel);
191
QGridLayout *grid = new QGridLayout(imagePanel);
192
QWidget *box2 = new QWidget(imagePanel);
193
QVBoxLayout *vlay3 = new QVBoxLayout(box2);
194
KHBox *imageBox = new KHBox(box2);
212
// ---------------------------------------------------------------
217
// ---------------------------------------------------------------
219
slotCheckNameEditSketchConditions();
220
slotCheckNameEditImageConditions();
223
QWidget* FuzzySearchView::setupFindSimilarPanel()
225
KHBox* imageBox = new KHBox();
195
226
d->imageWidget = new QLabel(imageBox);
196
227
d->imageWidget->setFixedSize(256, 256);
197
228
d->imageWidget->setText(i18n("<p>Drag & drop an image here<br/>to perform similar<br/>items search.</p>"
259
279
// ---------------------------------------------------------------
261
grid->addWidget(box2, 0, 0, 1, 3);
262
grid->addWidget(file, 1, 0, 1, 1);
263
grid->addWidget(d->labelFile, 1, 1, 1, 1);
264
grid->addWidget(folder, 2, 0, 1, 1);
265
grid->addWidget(d->labelFolder, 2, 1, 1, 1);
266
grid->addWidget(hbox3, 3, 0, 1, 3);
267
grid->addWidget(hbox4, 4, 0, 1, 3);
268
grid->setRowStretch(5, 10);
269
grid->setColumnStretch(1, 10);
270
grid->setMargin(KDialog::spacingHint());
271
grid->setSpacing(KDialog::spacingHint());
273
// ---------------------------------------------------------------
274
// Find by Sketch Panel
276
QWidget *sketchPanel = new QWidget(panel);
277
QGridLayout *grid2 = new QGridLayout(sketchPanel);
278
QWidget *box = new QWidget(sketchPanel);
279
QVBoxLayout *vlay2 = new QVBoxLayout(box);
280
KHBox *drawingBox = new KHBox(box);
281
d->sketchWidget = new SketchWidget(drawingBox);
281
QWidget* mainWidget = new QWidget();
282
QGridLayout* mainLayout = new QGridLayout();
283
mainLayout->addWidget(imageBox, 0, 0, 1,-1);
284
mainLayout->addWidget(file, 1, 0, 1, 1);
285
mainLayout->addWidget(d->labelFile, 1, 1, 1,-1);
286
mainLayout->addWidget(folder, 2, 0, 1, 1);
287
mainLayout->addWidget(d->labelFolder, 2, 1, 1,-1);
288
mainLayout->addWidget(resultsLabel, 3, 0, 1, 1);
289
mainLayout->addWidget(d->levelImage, 3, 2, 1,-1);
290
mainLayout->addWidget(saveBox, 4, 0, 1, 3);
291
mainLayout->setRowStretch(5, 10);
292
mainLayout->setColumnStretch(1, 10);
293
mainLayout->setMargin(KDialog::spacingHint());
294
mainLayout->setSpacing(KDialog::spacingHint());
295
mainWidget->setLayout(mainLayout);
300
QWidget* FuzzySearchView::setupSketchPanel()
302
KHBox* drawingBox = new KHBox();
303
d->sketchWidget = new SketchWidget(drawingBox);
282
304
drawingBox->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
283
305
drawingBox->setLineWidth(1);
285
vlay2->addStretch(10);
286
vlay2->addWidget(drawingBox, 0, Qt::AlignCenter);
287
vlay2->addStretch(10);
289
vlay2->setSpacing(0);
291
307
// ---------------------------------------------------------------
293
QString tips(i18n("Set here the brush color used to draw sketch."));
309
QString tooltip(i18n("Set here the brush color used to draw sketch."));
295
d->hsSelector = new KHueSaturationSelector(sketchPanel);
311
d->hsSelector = new KHueSaturationSelector();
296
312
d->hsSelector->setMinimumSize(200, 96);
297
313
d->hsSelector->setChooserMode(ChooserValue);
298
314
d->hsSelector->setColorValue(255);
299
d->hsSelector->setWhatsThis(tips);
315
d->hsSelector->setWhatsThis(tooltip);
301
d->vSelector = new KColorValueSelector(sketchPanel);
317
d->vSelector = new KColorValueSelector();
302
318
d->vSelector->setMinimumSize(26, 96);
303
319
d->vSelector->setChooserMode(ChooserValue);
304
320
d->vSelector->setIndent(false);
305
d->vSelector->setWhatsThis(tips);
321
d->vSelector->setWhatsThis(tooltip);
307
323
// ---------------------------------------------------------------
309
KHBox *hbox = new KHBox(sketchPanel);
311
d->undoBtnSketch = new QToolButton(hbox);
325
d->undoBtnSketch = new QToolButton();
312
326
d->undoBtnSketch->setAutoRepeat(true);
313
327
d->undoBtnSketch->setIcon(SmallIcon("edit-undo"));
314
328
d->undoBtnSketch->setToolTip(i18n("Undo last draw on sketch"));
315
329
d->undoBtnSketch->setWhatsThis(i18n("Use this button to undo last drawing action on sketch."));
316
330
d->undoBtnSketch->setEnabled(false);
318
d->redoBtnSketch = new QToolButton(hbox);
332
d->redoBtnSketch = new QToolButton();
319
333
d->redoBtnSketch->setAutoRepeat(true);
320
334
d->redoBtnSketch->setIcon(SmallIcon("edit-redo"));
321
335
d->redoBtnSketch->setToolTip(i18n("Redo last draw on sketch"));
322
336
d->redoBtnSketch->setWhatsThis(i18n("Use this button to redo last drawing action on sketch."));
323
337
d->redoBtnSketch->setEnabled(false);
325
QLabel *brushLabel = new QLabel(i18n("Pen:"), hbox);
326
d->penSize = new QSpinBox(hbox);
339
QLabel* brushLabel = new QLabel(i18n("Pen:"));
340
d->penSize = new QSpinBox();
327
341
d->penSize->setRange(1, 40);
328
342
d->penSize->setSingleStep(1);
329
343
d->penSize->setValue(10);
330
344
d->penSize->setWhatsThis(i18n("Set here the brush size in pixels used to draw sketch."));
332
QLabel *resultsLabel = new QLabel(i18n("Items:"), hbox);
333
d->resultsSketch = new QSpinBox(hbox);
346
QLabel* resultsLabel = new QLabel(i18n("Items:"));
347
d->resultsSketch = new QSpinBox();
334
348
d->resultsSketch->setRange(1, 50);
335
349
d->resultsSketch->setSingleStep(1);
336
350
d->resultsSketch->setValue(10);
337
351
d->resultsSketch->setWhatsThis(i18n("Set here the number of items to find using sketch."));
339
hbox->setStretchFactor(brushLabel, 10);
340
hbox->setStretchFactor(resultsLabel, 10);
342
hbox->setSpacing(KDialog::spacingHint());
353
QGridLayout* settingsLayout = new QGridLayout();
354
settingsLayout->addWidget(d->undoBtnSketch, 0, 0);
355
settingsLayout->addWidget(d->redoBtnSketch, 0, 1);
356
settingsLayout->addWidget(brushLabel, 0, 2);
357
settingsLayout->addWidget(d->penSize, 0, 3);
358
settingsLayout->addWidget(resultsLabel, 0, 5);
359
settingsLayout->addWidget(d->resultsSketch, 0, 6);
360
settingsLayout->setColumnStretch(4, 10);
361
settingsLayout->setMargin(0);
362
settingsLayout->setSpacing(KDialog::spacingHint());
344
364
// ---------------------------------------------------------------
346
KHBox *hbox2 = new KHBox(sketchPanel);
348
hbox2->setSpacing(KDialog::spacingHint());
366
KHBox* saveBox = new KHBox();
367
saveBox->setMargin(0);
368
saveBox->setSpacing(KDialog::spacingHint());
350
d->resetButton = new QToolButton(hbox2);
370
d->resetButton = new QToolButton(saveBox);
351
371
d->resetButton->setIcon(SmallIcon("document-revert"));
352
372
d->resetButton->setToolTip(i18n("Clear sketch"));
353
373
d->resetButton->setWhatsThis(i18n("Use this button to clear sketch contents."));
355
d->nameEditSketch = new KLineEdit(hbox2);
375
d->nameEditSketch = new KLineEdit(saveBox);
356
376
d->nameEditSketch->setClearButtonShown(true);
357
377
d->nameEditSketch->setWhatsThis(i18n("Enter the name of the current sketch search to save in the "
358
378
"\"My Fuzzy Searches\" view."));
360
d->saveBtnSketch = new QToolButton(hbox2);
380
d->saveBtnSketch = new QToolButton(saveBox);
361
381
d->saveBtnSketch->setIcon(SmallIcon("document-save"));
362
382
d->saveBtnSketch->setEnabled(false);
363
383
d->saveBtnSketch->setToolTip(i18n("Save current sketch search to a new virtual Album"));
369
389
// ---------------------------------------------------------------
371
grid2->addWidget(box, 0, 0, 1, 3);
372
grid2->addWidget(d->hsSelector, 1, 0, 1, 2);
373
grid2->addWidget(d->vSelector, 1, 2, 1, 1);
374
grid2->addWidget(hbox, 2, 0, 1, 3);
375
grid2->addWidget(hbox2, 3, 0, 1, 3);
376
grid2->setRowStretch(5, 10);
377
grid2->setColumnStretch(1, 10);
378
grid2->setMargin(KDialog::spacingHint());
379
grid2->setSpacing(KDialog::spacingHint());
381
// ---------------------------------------------------------------
382
// Find Duplicates Panel
384
d->findDuplicatesPanel = new FindDuplicatesView(panel);
386
d->tabWidget->insertTab(FuzzySearchViewPriv::SIMILARS, imagePanel, i18n("Image"));
387
d->tabWidget->insertTab(FuzzySearchViewPriv::SKETCH, sketchPanel, i18n("Sketch"));
388
d->tabWidget->insertTab(FuzzySearchViewPriv::DUPLICATES, d->findDuplicatesPanel, i18n("Duplicates"));
390
// ---------------------------------------------------------------
392
d->folderView = new KVBox(panel);
393
d->fuzzySearchFolderView = new FuzzySearchFolderView(d->folderView);
394
d->searchFuzzyBar = new SearchTextBar(d->folderView, "FuzzySearchViewSearchFuzzyBar");
395
d->folderView->setSpacing(KDialog::spacingHint());
396
d->folderView->setMargin(0);
398
// ---------------------------------------------------------------
400
vlay->addWidget(d->tabWidget);
401
vlay->addWidget(d->folderView);
407
// ---------------------------------------------------------------
391
QWidget* mainWidget = new QWidget;
392
QGridLayout* mainLayout = new QGridLayout();
393
mainLayout->addWidget(drawingBox, 0, 0, 1, 3);
394
mainLayout->addWidget(d->hsSelector, 1, 0, 1, 2);
395
mainLayout->addWidget(d->vSelector, 1, 2, 1, 1);
396
mainLayout->addLayout(settingsLayout, 2, 0, 1, 3);
397
mainLayout->addWidget(saveBox, 3, 0, 1, 3);
398
mainLayout->setRowStretch(5, 10);
399
mainLayout->setColumnStretch(1, 10);
400
mainLayout->setMargin(KDialog::spacingHint());
401
mainLayout->setSpacing(KDialog::spacingHint());
402
mainWidget->setLayout(mainLayout);
407
void FuzzySearchView::setupConnections()
409
409
connect(d->tabWidget, SIGNAL(currentChanged(int)),
410
410
this, SLOT(slotTabChanged(int)));