kfeedback.h

00001 /*
00002  *   File name:      kfeedback.h
00003  *   Summary: User feedback form and mailing utilities
00004  *   License: LGPL - See file COPYING.LIB for details.
00005  *   Author:  Stefan Hundhammer <sh@suse.de>
00006  *
00007  *   Updated: 2002-02-24
00008  *
00009  *   $Id: kfeedback_8h-source.html,v 1.10 2007/07/05 17:37:51 kuddel-fl Exp $
00010  *
00011  */
00012 
00013 
00014 #ifndef KFeedback_h
00015 #define KFeedback_h
00016 
00017 #ifdef HAVE_CONFIG_H
00018 #include <config.h>
00019 #endif
00020 
00021 #include <ntqlistview.h>
00022 #include <ntqvbox.h>
00023 #include <kdialogbase.h>
00024 
00025 
00026 #ifndef NOT_USED
00027 #    define NOT_USED(PARAM) ( (void) (PARAM) )
00028 #endif
00029 
00030 
00031 class KFeedbackForm;
00032 class KFeedbackQuestionList;
00033 class KFeedbackQuestion;
00034 class KFeedbackAnswer;
00035 class TQMultiLineEdit;
00036 
00037 
00042 class KFeedbackDialog: public KDialogBase
00043 {
00044     TQ_OBJECT
00045 
00046 public:
00047 
00051     KFeedbackDialog( const TQString & feedbackMailAddress,
00052                    const TQString & helpTopic = TQString::null );
00053 
00054 
00058     virtual ~KFeedbackDialog();
00059 
00060 
00064     KFeedbackForm *form() { return _form; }
00065 
00066 
00067 public slots:
00068 
00073     void checkSendButton();
00074 
00075 
00076 signals:
00083     void mailSent();
00084 
00085 
00086 protected:
00087 
00088     KFeedbackForm *  _form;
00089 };
00090 
00091 
00098 class KFeedbackForm: public TQVBox
00099 {
00100     TQ_OBJECT
00101 
00102 public:
00106     KFeedbackForm( const TQString & feedbackMailAddress,
00107                  TQWidget *         parent );
00108 
00112     virtual ~KFeedbackForm();
00113 
00114 
00115 public slots:
00116 
00128      virtual void sendMail();
00129 
00130 
00131 public:
00132 
00137     virtual bool readyToSend();
00138 
00142     KFeedbackQuestionList * questionList() { return _questionList; }
00143 
00144 
00145 signals:
00152     void mailSent();
00153 
00159     void checkComplete();
00160 
00161 
00162 protected slots:
00166     void slotCheckComplete();
00167 
00168 
00169 protected:
00170 
00174     TQString formatComment();
00175 
00176 
00177     TQString                 _feedbackMailAddress;
00178     KFeedbackQuestionList * _questionList;
00179     TQMultiLineEdit *        _comment;
00180 };
00181 
00182 
00183 
00187 class KFeedbackQuestionList: public TQListView
00188 {
00189     TQ_OBJECT
00190 
00191 public:
00192 
00196     KFeedbackQuestionList( TQWidget *parent );
00197 
00201     virtual ~KFeedbackQuestionList();
00202 
00207     virtual bool isComplete();
00208 
00212     TQString result();
00213 
00231     KFeedbackQuestion * addQuestion( const TQString &    text,
00232                                  const TQString & id,
00233                                  bool            exclusiveAnswer      = true,
00234                                  bool            required      = false );
00235 
00239     void addYesNoQuestion( const TQString &       text,
00240                         const TQString &   id,
00241                         bool              required = false );
00242 
00247     KFeedbackQuestion * firstQuestion() const
00248        { return (KFeedbackQuestion *) TQListView::firstChild(); }
00249 
00255     void questionAnswered();
00256 
00262     void questionAdded( KFeedbackQuestion * question );
00263 
00264 signals:
00268     void checkComplete();
00269 };
00270 
00271 
00275 class KFeedbackQuestion: public TQCheckListItem
00276 {
00277 public:
00278 
00300     KFeedbackQuestion( KFeedbackQuestionList *   parent,
00301                      const TQString &             text,
00302                      const TQString &             id,
00303                      bool                 exclusiveAnswer      = true,
00304                      bool                 required      = false,
00305                      bool                 open          = true );
00306 
00313     void addAnswer( const TQString & text,
00314                   const TQString & id   );
00315 
00319     bool isRequired() { return _required; }
00320 
00324     bool isAnswered();
00325 
00334     TQString result();
00335 
00339     TQString id() { return _id; }
00340 
00344     TQString text();
00345 
00349     bool exclusiveAnswer() { return _exclusiveAnswer; }
00350 
00351 
00357     virtual TQString key( int column, bool ascending ) const;
00358 
00362     KFeedbackQuestion * nextQuestion() const
00363        { return (KFeedbackQuestion *) TQListViewItem::nextSibling(); }
00364 
00369     KFeedbackAnswer * firstAnswer() const
00370        { return (KFeedbackAnswer *) TQListViewItem::firstChild(); }
00371 
00376     KFeedbackQuestionList * questionList() const;
00377 
00378 
00379 protected:
00380 
00381     TQString   _id;
00382     bool      _exclusiveAnswer;
00383     bool      _required;
00384     int              _no;
00385 };
00386 
00387 
00388 class KFeedbackAnswer: public TQCheckListItem
00389 {
00390 public:
00397     KFeedbackAnswer( KFeedbackQuestion *  parent,
00398                    const TQString &        text,
00399                    const TQString &        id,
00400                    bool                   exclusive = true );
00401 
00405     TQString id() { return _id; }
00406 
00410     TQString text();
00411 
00415     bool isExclusive() { return _exclusive; }
00416 
00420     bool isChecked() { return TQCheckListItem::isOn(); }
00421 
00425     KFeedbackAnswer * nextAnswer() const
00426        { return (KFeedbackAnswer *) TQListViewItem::nextSibling(); }
00427 
00431     KFeedbackQuestion * question() const
00432        { return (KFeedbackQuestion *) TQListViewItem::parent(); }
00433 
00439     virtual TQString key( int column, bool ascending ) const;
00440 
00441 
00449     virtual void stateChange( bool newState );
00450 
00451 protected:
00452 
00453     TQString   _id;
00454     bool      _exclusive;
00455     int              _no;
00456 };
00457 
00458 
00459 
00460 #endif // KFeedback_h
00461 
00462 
00463 // EOF

Generated on Thu Jul 5 19:36:06 2007 for kshowmail by  doxygen 1.5.0