// (c) Pierpaolo Di Panfilo 2004 // (c) Alexandre Pereira de Oliveira 2005 // (c) 2006 Peter C. Ndikuwera // See COPYING file for licensing information #ifndef SMARTPLAYLISTEDITOR_H #define SMARTPLAYLISTEDITOR_H #include //baseclass #include #include //baseclass #include //definition required #include //inline function class KComboBox; class KIntSpinBox; class KLineEdit; class TQCheckBox; class TQDateEdit; class TQLabel; class TQToolButton; class TQVGroupBox; class CriteriaEditor; class SmartPlaylistEditor : public KDialogBase { Q_OBJECT friend class CriteriaEditor; public: SmartPlaylistEditor( TQString playlist_name, TQWidget *parent, const char *name=0 ); SmartPlaylistEditor( TQWidget *parent, TQDomElement xml, const char *name=0 ); TQDomElement result(); TQString name() const { return m_nameLineEdit->text().replace( "\n", " " ); } enum CriteriaType { criteriaAll = 0, criteriaAny = 1 }; public slots: void addCriteriaAny(); void addCriteriaAny( TQDomElement &xml); void removeCriteriaAny( CriteriaEditor *criteria); void addCriteriaAll(); void addCriteriaAll( TQDomElement &xml); void removeCriteriaAll( CriteriaEditor *criteria); private slots: void updateOrderTypes( int index ); private: void init(TQString defaultName); void updateMatchWidgets(); KLineEdit *m_nameLineEdit; TQCheckBox *m_matchAnyCheck; TQCheckBox *m_matchAllCheck; // matching boxes TQVGroupBox *m_criteriaAnyGroupBox; TQVGroupBox *m_criteriaAllGroupBox; //limit widgets TQCheckBox *m_limitCheck; KIntSpinBox *m_limitSpin; //order by widgets TQCheckBox *m_orderCheck; KComboBox *m_orderCombo; KComboBox *m_orderTypeCombo; //expand by TQCheckBox *m_expandCheck; KComboBox *m_expandCombo; TQPtrList m_criteriaEditorAnyList; TQPtrList m_criteriaEditorAllList; }; class CriteriaEditor : public TQHBox { Q_OBJECT public: CriteriaEditor( SmartPlaylistEditor *editor, TQWidget *parent, int criteriaType, TQDomElement criteria = TQDomElement() ); ~CriteriaEditor(); TQString getSearchCriteria(); void setSearchCriteria( const TQString &str ); TQDomElement getDomSearchCriteria( TQDomDocument &doc ); void enableRemove( bool ); private slots: void slotRemoveCriteriaAny(); void slotRemoveCriteriaAll(); void slotAddCriteriaAny(); void slotAddCriteriaAll(); void slotFieldSelected( int ); void loadEditWidgets(); private: enum ValueType { String, AutoCompletionString, Number, Year, Date, Rating, Length }; void loadCriteriaList( int valueType, TQString condition = TQString() ); int getValueType( int fieldIndex ); inline int indexToRating( int ); inline int ratingToIndex( int ); SmartPlaylistEditor *m_playlistEditor; int m_currentValueType; TQString m_lastCriteria; KComboBox *m_fieldCombo; KComboBox *m_criteriaCombo; TQToolButton *m_addButton; TQToolButton *m_removeButton; //editing widgets TQHBox *m_editBox; KLineEdit *m_lineEdit; KComboBox *m_comboBox; KComboBox *m_comboBox2; KIntSpinBox *m_intSpinBox1; KIntSpinBox *m_intSpinBox2; TQDateEdit *m_dateEdit1; TQDateEdit *m_dateEdit2; KComboBox *m_dateCombo; TQLabel *m_rangeLabel; KComboBox *m_lengthCombo; }; inline int CriteriaEditor::indexToRating( int index ) { if ( index <= 10 && index >= 0 ) return index; return -1; } inline int CriteriaEditor::ratingToIndex( int rating ) { if ( rating <= 10 && rating >= 0 ) return rating; return -1; } #endif