20#include "kexicsvwidgets.h"
28#include <kdialogbase.h>
29#include <kactivelabel.h>
30#include <kiconloader.h>
33#define KEXICSV_OTHER_DELIMITER_INDEX 4
35KexiCSVDelimiterWidget::KexiCSVDelimiterWidget(
bool lineEditOnBottom, TQWidget * parent )
36 : TQWidget(parent,
"KexiCSVDelimiterWidget")
37 , m_availableDelimiters(KEXICSV_OTHER_DELIMITER_INDEX)
42 (TQBoxLayout *)
new TQVBoxLayout(
this, 0, KDialogBase::spacingHint() )
43 : (TQBoxLayout *)
new TQHBoxLayout(
this, 0, KDialogBase::spacingHint() );
45 m_availableDelimiters[0]=KEXICSV_DEFAULT_FILE_DELIMITER;
46 m_availableDelimiters[1]=
";";
47 m_availableDelimiters[2]=
"\t";
48 m_availableDelimiters[3]=
" ";
50 m_combo =
new KComboBox(
this,
"KexiCSVDelimiterComboBox");
51 m_combo->insertItem( i18n(
"Comma \",\"") );
52 m_combo->insertItem( i18n(
"Semicolon \";\"" ) );
53 m_combo->insertItem( i18n(
"Tabulator" ) );
54 m_combo->insertItem( i18n(
"Space \" \"" ) );
55 m_combo->insertItem( i18n(
"Other" ) );
56 lyr->addWidget(m_combo);
57 setFocusProxy(m_combo);
59 m_delimiterEdit =
new KLineEdit(
this,
"m_delimiterEdit" );
61 m_delimiterEdit->setMaximumSize( TQSize( 30, 32767 ) );
62 m_delimiterEdit->setMaxLength(1);
63 lyr->addWidget( m_delimiterEdit );
64 if (!lineEditOnBottom)
67 slotDelimiterChangedInternal(KEXICSV_DEFAULT_FILE_DELIMITER_INDEX);
68 connect(m_combo, TQ_SIGNAL(activated(
int)),
69 this, TQ_SLOT(slotDelimiterChanged(
int)));
70 connect(m_delimiterEdit, TQ_SIGNAL(returnPressed()),
71 this, TQ_SLOT(slotDelimiterLineEditReturnPressed()));
72 connect(m_delimiterEdit, TQ_SIGNAL(textChanged(
const TQString & )),
73 this, TQ_SLOT(slotDelimiterLineEditTextChanged(
const TQString & ) ));
78 slotDelimiterChangedInternal(index);
79 if (index==KEXICSV_OTHER_DELIMITER_INDEX)
80 m_delimiterEdit->setFocus();
83void KexiCSVDelimiterWidget::slotDelimiterChangedInternal(
int index)
86 if (index > KEXICSV_OTHER_DELIMITER_INDEX)
88 else if (index == KEXICSV_OTHER_DELIMITER_INDEX) {
89 changed = m_delimiter != m_delimiterEdit->text();
90 m_delimiter = m_delimiterEdit->text();
93 changed = m_delimiter != m_availableDelimiters[index];
94 m_delimiter = m_availableDelimiters[index];
96 m_delimiterEdit->setEnabled(index == KEXICSV_OTHER_DELIMITER_INDEX);
98 emit delimiterChanged(m_delimiter);
101void KexiCSVDelimiterWidget::slotDelimiterLineEditReturnPressed()
103 if (m_combo->currentItem() != KEXICSV_OTHER_DELIMITER_INDEX)
105 slotDelimiterChangedInternal(KEXICSV_OTHER_DELIMITER_INDEX);
108void KexiCSVDelimiterWidget::slotDelimiterLineEditTextChanged(
const TQString & )
110 slotDelimiterChangedInternal(KEXICSV_OTHER_DELIMITER_INDEX);
113void KexiCSVDelimiterWidget::setDelimiter(
const TQString& delimiter)
115 TQValueVector<TQString>::ConstIterator it = m_availableDelimiters.constBegin();
117 for (; it != m_availableDelimiters.constEnd(); ++it, index++) {
118 if (*it == delimiter) {
119 m_combo->setCurrentItem(index);
120 slotDelimiterChangedInternal(index);
125 m_delimiterEdit->setText(delimiter);
126 m_combo->setCurrentItem(KEXICSV_OTHER_DELIMITER_INDEX);
127 slotDelimiterChangedInternal(KEXICSV_OTHER_DELIMITER_INDEX);
132KexiCSVTextQuoteComboBox::KexiCSVTextQuoteComboBox( TQWidget * parent )
133 : KComboBox(parent,
"KexiCSVTextQuoteComboBox")
137 insertItem( i18n(
"None" ) );
140TQString KexiCSVTextQuoteComboBox::textQuote()
const
142 if (currentItem()==2)
144 return currentText();
149 if (textQuote==
"\"" || textQuote==
"'")
150 setCurrentText(textQuote);
151 else if (textQuote.isEmpty())
152 setCurrentText(i18n(
"None" ));
157KexiCSVInfoLabel::KexiCSVInfoLabel(
const TQString& labelText, TQWidget* parent )
158 : TQWidget(parent,
"KexiCSVInfoLabel")
160 TQVBoxLayout *vbox =
new TQVBoxLayout(
this, 0, KDialogBase::spacingHint() );
161 TQHBoxLayout *hbox =
new TQHBoxLayout(
this );
162 vbox->addLayout(hbox);
163 m_leftLabel =
new TQLabel(labelText,
this);
164 m_leftLabel->setMinimumWidth(130);
165 m_leftLabel->setSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Preferred);
166 m_leftLabel->setAlignment(TQt::AlignVCenter | TQt::AlignLeft | TQt::WordBreak);
167 hbox->addWidget(m_leftLabel);
168 m_iconLbl =
new TQLabel(
this);
169 m_iconLbl->setSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Preferred);
170 m_iconLbl->setAlignment(TQt::AlignVCenter | TQt::AlignLeft);
171 m_fnameLbl =
new KActiveLabel(
this);
172 m_fnameLbl->setFocusPolicy(TQWidget::NoFocus);
173 m_fnameLbl->setTextFormat(TQt::PlainText);
174 m_fnameLbl->setSizePolicy(TQSizePolicy(TQSizePolicy::MinimumExpanding, TQSizePolicy::MinimumExpanding,1,0));
175 m_fnameLbl->setLineWidth(1);
176 m_fnameLbl->setFrameStyle(TQFrame::Box);
177 m_fnameLbl->setAlignment(TQt::AlignVCenter | TQt::AlignLeft | TQt::WordBreak);
179 hbox->addWidget(m_iconLbl);
180 hbox->addWidget(m_fnameLbl, 1, TQt::AlignVCenter | TQt::AlignLeft | TQt::WordBreak);
181 hbox->addSpacing(10);
182 m_commentLbl =
new KActiveLabel(
this);
183 m_commentLbl->setFocusPolicy(TQWidget::NoFocus);
184 m_commentLbl->setTextFormat(TQt::PlainText);
185 m_commentLbl->setSizePolicy(TQSizePolicy::MinimumExpanding, TQSizePolicy::MinimumExpanding);
186 m_commentLbl->setLineWidth(1);
187 m_commentLbl->setFrameStyle(TQFrame::Box);
188 m_commentLbl->setAlignment(TQt::AlignVCenter | TQt::AlignLeft | TQt::WordBreak);
189 hbox->addWidget(m_commentLbl, 0, TQt::AlignVCenter | TQt::AlignRight | TQt::WordBreak);
191 m_separator =
new TQFrame(
this);
192 m_separator->setFrameShape(TQFrame::HLine);
193 m_separator->setFrameShadow(TQFrame::Sunken);
194 vbox->addWidget(m_separator);
197void KexiCSVInfoLabel::setFileName(
const TQString& fileName )
199 m_fnameLbl->setText( TQDir::convertSeparators(fileName) );
200 if (!fileName.isEmpty()) {
201 m_iconLbl->setPixmap(
202 KMimeType::pixmapForURL(KURL::fromPathOrURL(fileName), 0, TDEIcon::Desktop) );
206void KexiCSVInfoLabel::setLabelText(
const TQString& text )
208 m_fnameLbl->setText( text );
216 m_iconLbl->setPixmap( DesktopIcon(iconName) );
219void KexiCSVInfoLabel::setCommentText(
const TQString& text )
221 m_commentLbl->setText(text);
226TQStringList csvMimeTypes()
228 TQStringList mimetypes;
229 mimetypes <<
"text/x-csv" <<
"text/plain" <<
"all/allfiles";
233#include "kexicsvwidgets.moc"
void setIcon(const TQString &iconName)
sets icon pixmap to iconName. Used wher setIconForFilename was false in ctor.
void setTextQuote(const TQString &textQuote)
Sets text quote. Only available are: ", ', and empty string.