1 #ifndef _KVI_SELECTORS_H_ 2 #define _KVI_SELECTORS_H_ 3 //============================================================================= 4 // 5 // File : KviSelectors.h 6 // Creation date : Mon Now 13 2000 15:21:10 CEST by Szymon Stefanek 7 // 8 // This file is part of the KVIrc IRC client distribution 9 // Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net) 10 // 11 // This program is FREE software. You can redistribute it and/or 12 // modify it under the terms of the GNU General Public License 13 // as published by the Free Software Foundation; either version 2 14 // of the License, or (at your option) any later version. 15 // 16 // This program is distributed in the HOPE that it will be USEFUL, 17 // but WITHOUT ANY WARRANTY; without even the implied warranty of 18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 19 // See the GNU General Public License for more details. 20 // 21 // You should have received a copy of the GNU General Public License 22 // along with this program. If not, write to the Free Software Foundation, 23 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 24 // 25 //============================================================================= 26 27 #include "kvi_settings.h" 28 #include "KviPixmap.h" 29 #include "KviTalHBox.h" 30 #include "KviTalListWidget.h" 31 #include "KviTalVBox.h" 32 33 #include <QCheckBox> 34 #include <QColor> 35 #include <QFont> 36 #include <QLabel> 37 #include <QLineEdit> 38 #include <QPushButton> 39 #include <QScrollArea> 40 #include <QSpinBox> 41 #include <QString> 42 #include <QStringList> 43 #include <QTreeWidget> 44 #include <QValidator> 45 46 class KVIRC_API KviSelectorInterface 47 { 48 public: KviSelectorInterface()49 KviSelectorInterface(){}; ~KviSelectorInterface()50 virtual ~KviSelectorInterface(){}; 51 52 public: commit()53 virtual void commit(){}; textForSearch()54 virtual QString textForSearch() { return QString(); }; widgetToHighlight()55 virtual QWidget * widgetToHighlight() { return nullptr; }; 56 }; 57 58 class KVIRC_API KviBoolSelector : public QCheckBox, public KviSelectorInterface 59 { 60 Q_OBJECT 61 public: 62 KviBoolSelector(QWidget * par, const QString & txt, bool * pOption, bool bEnabled); ~KviBoolSelector()63 ~KviBoolSelector(){}; 64 65 private: 66 bool * m_pOption; 67 68 public: 69 virtual void commit(); textForSearch()70 QString textForSearch() { return text(); }; widgetToHighlight()71 QWidget * widgetToHighlight() { return (QWidget *)this; }; 72 public slots: 73 void setNotEnabled(bool bNotEnabled); 74 void setEnabled(bool bEnabled); 75 }; 76 77 class KVIRC_API KviStringSelector : public KviTalHBox, public KviSelectorInterface 78 { 79 Q_OBJECT 80 public: 81 KviStringSelector(QWidget * par, const QString & txt, QString * pOption, bool bEnabled); 82 ~KviStringSelector(); 83 84 protected: 85 QLabel * m_pLabel; 86 QLineEdit * m_pLineEdit; 87 QString * m_pOption; 88 89 public: setValidator(QValidator * v)90 void setValidator(QValidator * v) { m_pLineEdit->setValidator(v); }; setMinimumLabelWidth(unsigned int uWidth)91 void setMinimumLabelWidth(unsigned int uWidth) { m_pLabel->setMinimumWidth(uWidth); }; 92 virtual void commit(); 93 void setText(const QString & text); textForSearch()94 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()95 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; lineEdit()96 QLineEdit * lineEdit() { return m_pLineEdit; }; currentText()97 QString currentText() { return m_pLineEdit->text(); }; 98 public slots: 99 virtual void setEnabled(bool bEnabled); 100 }; 101 102 class KVIRC_API KviPasswordSelector : public KviTalHBox, public KviSelectorInterface 103 { 104 Q_OBJECT 105 public: 106 KviPasswordSelector(QWidget * par, const QString & txt, QString * pOption, bool bEnabled); 107 ~KviPasswordSelector(); 108 109 protected: 110 QLabel * m_pLabel; textForSearch()111 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()112 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; 113 QLineEdit * m_pLineEdit; 114 QCheckBox * m_pCheckBox; 115 QString * m_pOption; 116 117 public: setValidator(QValidator * v)118 void setValidator(QValidator * v) { m_pLineEdit->setValidator(v); }; setMinimumLabelWidth(unsigned int uWidth)119 void setMinimumLabelWidth(unsigned int uWidth) { m_pLabel->setMinimumWidth(uWidth); }; 120 virtual void commit(); 121 void setText(const QString & text); 122 public slots: 123 virtual void setEnabled(bool bEnabled); 124 protected slots: 125 void checkToggled(int state); 126 }; 127 128 class KVIRC_API KviPasswordLineEdit : public KviTalHBox 129 { 130 Q_OBJECT 131 public: 132 KviPasswordLineEdit(QWidget * par); 133 ~KviPasswordLineEdit(); 134 135 protected: 136 QLineEdit * m_pLineEdit; 137 QCheckBox * m_pCheckBox; 138 139 public: 140 QString text(); 141 void setText(const QString & text); 142 public slots: 143 virtual void setEnabled(bool bEnabled); 144 protected slots: 145 void checkToggled(int state); 146 }; 147 148 class KVIRC_API KviPixmapPreview : public QScrollArea 149 { 150 Q_OBJECT 151 public: 152 KviPixmapPreview(QWidget * par); 153 ~KviPixmapPreview(); 154 155 protected: 156 QLabel * m_pLabPixmap; 157 158 public: 159 void setPixmap(KviPixmap * pix); 160 }; 161 162 class KVIRC_API KviPixmapSelector : public QWidget, public KviSelectorInterface 163 { 164 Q_OBJECT 165 public: 166 KviPixmapSelector(QWidget * par, const QString & txt, KviPixmap * pOption, bool bEnabled); 167 ~KviPixmapSelector(); 168 169 private: 170 QCheckBox * m_pCheckBox; 171 QLabel * m_pFileNameLabel; 172 KviPixmapPreview * m_pPreview; 173 QPushButton * m_pChooseButton; 174 KviPixmap * m_pOption; 175 KviPixmap m_localPixmap; 176 177 public: 178 void setImagePath(const QString & path); 179 virtual void commit(); 180 virtual void setEnabled(bool bEnabled); 181 protected slots: 182 void checkBoxToggled(bool bEnabled); 183 void choosePixmap(); 184 }; 185 186 class KVIRC_API KviUIntSelector : public KviTalHBox, public KviSelectorInterface 187 { 188 Q_OBJECT 189 public: 190 KviUIntSelector(QWidget * par, const QString & txt, unsigned int * pOption, 191 unsigned int uLowBound, unsigned int uHighBound, unsigned int uDefault, bool bEnabled, bool bShortInt = false); ~KviUIntSelector()192 ~KviUIntSelector(){}; 193 194 private: 195 QLabel * m_pLabel; 196 197 QSpinBox * m_pSpinBox; 198 unsigned int * m_pOption; 199 unsigned int m_uLowBound; 200 unsigned int m_uHighBound; 201 unsigned int m_uDefault; 202 bool m_bIsShortInt; 203 204 public: textForSearch()205 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()206 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; 207 virtual void setPrefix(const QString & txt); 208 virtual void setSuffix(const QString & txt); 209 virtual void commit(); 210 public slots: 211 virtual void setEnabled(bool bEnabled); 212 }; 213 214 class KVIRC_API KviFileSelector : public QWidget, public KviSelectorInterface 215 { 216 Q_OBJECT 217 Q_PROPERTY(QString tmpFile READ tmpFile WRITE setTmpFile) 218 public: 219 KviFileSelector(QWidget * par, const QString & txt, QString * pOption, bool bEnabled, unsigned int uFlags = 0, const QString & szFilter = QString()); ~KviFileSelector()220 ~KviFileSelector(){}; 221 222 public: 223 enum Flags 224 { 225 ChooseSaveFileName = 1, 226 DontConfirmOverwrite = 2, 227 VerticalLayout = 4 228 }; 229 230 protected: 231 QLabel * m_pLabel; 232 QLineEdit * m_pLineEdit; 233 QPushButton * m_pButton; 234 QString * m_pOption; 235 unsigned int m_uFlags; 236 QString m_szFilter; 237 QGridLayout * m_Layout; 238 239 public: tmpFile()240 QString tmpFile() { return m_pLineEdit->text(); }; setTmpFile(QString & szFile)241 void setTmpFile(QString & szFile) { m_pLineEdit->setText(szFile); }; 242 virtual void commit(); 243 void setSelection(const QString & szSelection); 244 signals: 245 void selectionChanged(const QString & szNewValue); 246 public slots: 247 virtual void setEnabled(bool bEnabled); 248 private slots: 249 void browseClicked(); 250 251 protected: 252 virtual void select(); 253 }; 254 255 class KVIRC_API KviDirectorySelector : public KviFileSelector 256 { 257 Q_OBJECT 258 public: 259 KviDirectorySelector(QWidget * par, const QString & txt, QString * pOption, bool bEnabled, unsigned int uFlags = 0); ~KviDirectorySelector()260 ~KviDirectorySelector(){}; 261 262 protected: 263 virtual void select(); 264 }; 265 266 class KVIRC_API KviColorSelector : public KviTalHBox, public KviSelectorInterface 267 { 268 Q_OBJECT 269 public: 270 KviColorSelector(QWidget * par, const QString & txt, QColor * pOption, bool bEnabled); ~KviColorSelector()271 ~KviColorSelector(){}; 272 273 private: 274 QLabel * m_pLabel; 275 QColor * m_pOption; 276 QColor m_memColor; 277 QPushButton * m_pButton; 278 279 public: textForSearch()280 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()281 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; 282 virtual void commit(); getColor()283 QColor getColor() { return m_memColor; }; 284 void forceColor(QColor clr); 285 286 private: 287 void setButtonPalette(QColor * pOption); 288 private slots: 289 void changeClicked(); 290 public slots: 291 virtual void setEnabled(bool bEnabled); 292 }; 293 294 class KVIRC_API KviFontSelector : public KviTalHBox, public KviSelectorInterface 295 { 296 Q_OBJECT 297 public: 298 KviFontSelector(QWidget * par, const QString & txt, QFont * pOption, bool bEnabled); ~KviFontSelector()299 ~KviFontSelector(){}; 300 301 private: 302 QLabel * m_pLabel; 303 QFont * m_pOption; 304 QPushButton * m_pButton; 305 306 public: 307 virtual void commit(); textForSearch()308 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()309 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; 310 private: 311 void setButtonFont(QFont * pOption); 312 public slots: 313 virtual void setEnabled(bool bEnabled); 314 private slots: 315 void changeClicked(); 316 }; 317 318 class KVIRC_API KviStringListSelector : public KviTalVBox, public KviSelectorInterface 319 { 320 Q_OBJECT 321 public: 322 KviStringListSelector(QWidget * par, const QString & txt, QStringList * pOption, bool bEnabled); 323 ~KviStringListSelector(); 324 325 private: 326 QLabel * m_pLabel; 327 KviTalListWidget * m_pListWidget; 328 QLineEdit * m_pLineEdit; 329 QPushButton * m_pAddButton; 330 QPushButton * m_pRemoveButton; 331 QStringList * m_pOption; 332 333 public: 334 virtual void commit(); textForSearch()335 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()336 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; 337 public slots: 338 virtual void setEnabled(bool bEnabled); 339 private slots: 340 void textChanged(const QString & str); 341 void itemSelectionChanged(); 342 void addClicked(); 343 void removeClicked(); 344 }; 345 346 class QMenu; 347 348 class KVIRC_API KviMircTextColorSelector : public KviTalHBox, public KviSelectorInterface 349 { 350 Q_OBJECT 351 public: 352 KviMircTextColorSelector(QWidget * par, const QString & txt, unsigned int * uFore, unsigned int * uBack, bool bEnabled); 353 ~KviMircTextColorSelector(); 354 355 private: 356 QLabel * m_pLabel; 357 QPushButton * m_pButton; 358 unsigned int * m_pUFore; 359 unsigned int * m_pUBack; 360 unsigned int m_uFore; 361 unsigned int m_uBack; 362 QMenu * m_pContextPopup; 363 QMenu * m_pForePopup; 364 QMenu * m_pBackPopup; 365 366 public: 367 virtual void commit(); 368 virtual void setEnabled(bool bEnabled); 369 protected slots: 370 void buttonClicked(); 371 void foreSelected(QAction * pAction); 372 void backSelected(QAction * pAction); 373 374 protected: 375 void setButtonPalette(); 376 }; 377 378 class KVIRC_API KviSoundSelector : public KviFileSelector 379 { 380 Q_OBJECT 381 public: 382 KviSoundSelector(QWidget * par, const QString & txt, QString * pOption, bool bEnabled); 383 ~KviSoundSelector(); 384 385 protected: 386 QPushButton * m_pPlayButton; 387 private slots: 388 void playSound(); 389 390 public: 391 virtual void setEnabled(bool bEnabled); 392 }; 393 394 class KVIRC_API KviChanTreeViewItem : public QTreeWidgetItem 395 { 396 private: 397 QString m_szPass; 398 399 public: 400 KviChanTreeViewItem(QTreeWidget * pList, QString szChan, QString szPass); ~KviChanTreeViewItem()401 ~KviChanTreeViewItem(){}; 402 pass()403 const QString & pass() { return m_szPass; } 404 }; 405 406 class KVIRC_API KviChannelListSelector : public KviTalVBox, public KviSelectorInterface 407 { 408 Q_OBJECT 409 public: 410 KviChannelListSelector(QWidget * par, const QString & txt, QStringList * pOption, bool bEnabled); 411 ~KviChannelListSelector(); 412 413 private: 414 QLabel * m_pLabel; 415 QTreeWidget * m_pTreeWidget; 416 QLineEdit * m_pChanLineEdit; 417 QLineEdit * m_pPassLineEdit; 418 QPushButton * m_pAddButton; 419 QPushButton * m_pRemoveButton; 420 QStringList * m_pOption; 421 422 public: 423 virtual void commit(); textForSearch()424 QString textForSearch() { return m_pLabel->text(); }; widgetToHighlight()425 QWidget * widgetToHighlight() { return (QWidget *)m_pLabel; }; 426 virtual void setEnabled(bool bEnabled); 427 private slots: 428 void textChanged(const QString & str); 429 void itemSelectionChanged(); 430 void addClicked(); 431 void removeClicked(); 432 }; 433 434 #endif //!_KVI_SELECTORS_H_ 435