File indexing completed on 2024-03-03 04:04:33

0001 #include "ktreewidgetsearchlinetest.h"
0002 
0003 #include <QApplication>
0004 #include <QBoxLayout>
0005 #include <QDialogButtonBox>
0006 #include <QHeaderView>
0007 #include <QPushButton>
0008 #include <QString>
0009 #include <QTreeWidget>
0010 
0011 #include <ktreewidgetsearchline.h>
0012 #include <ktreewidgetsearchlinewidget.h>
0013 
0014 KTreeWidgetSearchLineTest::KTreeWidgetSearchLineTest()
0015     : QDialog()
0016 {
0017     // to test KWhatsThisManager too:
0018     setWhatsThis(QStringLiteral("This is a test dialog for KTreeWidgetSearchLineTest"));
0019     tw = new QTreeWidget(this);
0020     tw->setColumnCount(4);
0021     tw->setHeaderLabels(QStringList() << QStringLiteral("Item") << QStringLiteral("Price") << QStringLiteral("HIDDEN COLUMN") << QStringLiteral("Source"));
0022     tw->hideColumn(2);
0023 
0024     KTreeWidgetSearchLineWidget *searchWidget = new KTreeWidgetSearchLineWidget(this, tw);
0025     m_searchLine = searchWidget->searchLine();
0026 
0027     QTreeWidgetItem *red = new QTreeWidgetItem(tw, QStringList() << QStringLiteral("Red"));
0028     red->setWhatsThis(0, QStringLiteral("This item is red"));
0029     red->setWhatsThis(1, QStringLiteral("This item is pricy"));
0030     tw->expandItem(red);
0031     QTreeWidgetItem *blue = new QTreeWidgetItem(tw, QStringList() << QStringLiteral("Blue"));
0032     tw->expandItem(blue);
0033     QTreeWidgetItem *green = new QTreeWidgetItem(tw, QStringList() << QStringLiteral("Green"));
0034     tw->expandItem(green);
0035     QTreeWidgetItem *yellow = new QTreeWidgetItem(tw, QStringList() << QStringLiteral("Yellow"));
0036     tw->expandItem(yellow);
0037 
0038     create2ndLevel(red);
0039     create2ndLevel(blue);
0040     create2ndLevel(green);
0041     create2ndLevel(yellow);
0042 
0043     QVBoxLayout *layout = new QVBoxLayout(this);
0044 
0045     QHBoxLayout *hbox = new QHBoxLayout();
0046 
0047     QPushButton *caseSensitive = new QPushButton(QStringLiteral("&Case Sensitive"), this);
0048     hbox->addWidget(caseSensitive);
0049     caseSensitive->setCheckable(true);
0050     connect(caseSensitive, SIGNAL(toggled(bool)), SLOT(switchCaseSensitivity(bool)));
0051 
0052     QPushButton *keepParentsVisible = new QPushButton(QStringLiteral("Keep &Parents Visible"), this);
0053     hbox->addWidget(keepParentsVisible);
0054     keepParentsVisible->setCheckable(true);
0055     keepParentsVisible->setChecked(true);
0056     connect(keepParentsVisible, SIGNAL(toggled(bool)), m_searchLine, SLOT(setKeepParentsVisible(bool)));
0057 
0058     QDialogButtonBox *buttonBox = new QDialogButtonBox(this);
0059     buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
0060     connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
0061     connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
0062 
0063     layout->addWidget(searchWidget);
0064     layout->addWidget(tw);
0065     layout->addLayout(hbox);
0066     layout->addWidget(buttonBox);
0067 
0068     m_searchLine->setFocus();
0069 
0070     resize(350, 600);
0071 }
0072 
0073 void KTreeWidgetSearchLineTest::create3rdLevel(QTreeWidgetItem *item)
0074 {
0075     new QTreeWidgetItem(item, QStringList() << QStringLiteral("Growing") << QStringLiteral("$2.00") << QString("") << QStringLiteral("Farmer"));
0076     new QTreeWidgetItem(item, QStringList() << QStringLiteral("Ripe") << QStringLiteral("$8.00") << QString("") << QStringLiteral("Market"));
0077     new QTreeWidgetItem(item, QStringList() << QStringLiteral("Decaying") << QStringLiteral("$0.50") << QString("") << QStringLiteral("Ground"));
0078     new QTreeWidgetItem(item, QStringList() << QStringLiteral("Pickled") << QStringLiteral("$4.00") << QString("") << QStringLiteral("Shop"));
0079 }
0080 
0081 void KTreeWidgetSearchLineTest::create2ndLevel(QTreeWidgetItem *item)
0082 {
0083     QTreeWidgetItem *beans = new QTreeWidgetItem(item, QStringList() << QStringLiteral("Beans"));
0084     tw->expandItem(beans);
0085     create3rdLevel(beans);
0086 
0087     QTreeWidgetItem *grapes = new QTreeWidgetItem(item, QStringList() << QStringLiteral("Grapes"));
0088     tw->expandItem(grapes);
0089     create3rdLevel(grapes);
0090 
0091     QTreeWidgetItem *plums = new QTreeWidgetItem(item, QStringList() << QStringLiteral("Plums"));
0092     tw->expandItem(plums);
0093     create3rdLevel(plums);
0094 
0095     QTreeWidgetItem *bananas = new QTreeWidgetItem(item, QStringList() << QStringLiteral("Bananas"));
0096     tw->expandItem(bananas);
0097     create3rdLevel(bananas);
0098 }
0099 
0100 void KTreeWidgetSearchLineTest::switchCaseSensitivity(bool cs)
0101 {
0102     m_searchLine->setCaseSensitivity(cs ? Qt::CaseSensitive : Qt::CaseInsensitive);
0103 }
0104 
0105 void KTreeWidgetSearchLineTest::showEvent(QShowEvent *event)
0106 {
0107     QDialog::showEvent(event);
0108 
0109     for (int i = 0; i < tw->header()->count(); ++i) {
0110         if (!tw->header()->isSectionHidden(i)) {
0111             tw->resizeColumnToContents(i);
0112         }
0113     }
0114 }
0115 
0116 int main(int argc, char **argv)
0117 {
0118     QApplication::setApplicationName(QStringLiteral("KTreeWidgetSearchLineTest"));
0119     QApplication app(argc, argv);
0120     KTreeWidgetSearchLineTest dialog;
0121 
0122     dialog.exec();
0123 
0124     return 0;
0125 }
0126 
0127 #include "moc_ktreewidgetsearchlinetest.cpp"