libyui-qt
Loading...
Searching...
No Matches
YQWizard.h
1/*
2 Copyright (C) 2000-2012 Novell, Inc
3 This library is free software; you can redistribute it and/or modify
4 it under the terms of the GNU Lesser General Public License as
5 published by the Free Software Foundation; either version 2.1 of the
6 License, or (at your option) version 3.0 of the License. This library
7 is distributed in the hope that it will be useful, but WITHOUT ANY
8 WARRANTY; without even the implied warranty of MERCHANTABILITY or
9 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
10 License for more details. You should have received a copy of the GNU
11 Lesser General Public License along with this library; if not, write
12 to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
13 Floor, Boston, MA 02110-1301 USA
14*/
15
16
17/*-/
18
19 File: YQWizard.h
20
21 Author: Stefan Hundhammer <shundhammer@suse.de>
22
23/-*/
24
25
26#ifndef YQWizard_h
27#define YQWizard_h
28
29#include <yui/YWizard.h>
30
31#include <string>
32
33#include <QStringList>
34#include <QSplitter>
35
36#include "QY2ListView.h"
37#include "YQWizardButton.h"
38
39class QAction;
40class QEvent;
41class QFrame;
42class QLabel;
43class QMenuBar;
44class QPushButton;
45class QStackedWidget;
46class QToolButton;
47class QTreeWidgetItem;
48class QY2HelpDialog;
50class YQAlignment;
51class YReplacePoint;
52
53
54enum YQStyleButtonPos
55{
56 NoStyleButton,
57 StyleButtonInLogoBanner,
58 StyleButtonRightOfDialogHeading,
59 StyleButtonRightOfHelpButton
60};
61
62
63class YQWizard : public QSplitter, public YWizard
64{
65 Q_OBJECT
66
67protected:
68 class Step;
69 class TreeItem;
70
71public:
75 YQWizard( YWidget * parent,
76 const std::string & backButtonLabel,
77 const std::string & abortButtonLabel,
78 const std::string & nextButtonLabel,
79 YWizardMode wizardMode = YWizardMode_Standard );
80
84 virtual ~YQWizard();
85
91 virtual std::string debugLabel() const;
92
93 enum Direction { Forward, Backward };
94
100 Direction direction() const { return _direction; }
101
102 //
103 // Wizard basics
104 //
105
111 virtual YQWizardButton * backButton() const { return _backButton; }
112 virtual YQWizardButton * abortButton() const { return _abortButton; }
113 virtual YQWizardButton * nextButton() const { return _nextButton; }
114
115 virtual YReplacePoint * contentsReplacePoint() const { return _contentsReplacePoint; }
116
123 virtual void setButtonLabel( YPushButton * button, const std::string & newLabel );
124
130 virtual void setHelpText( const std::string & helpText );
131
137 virtual void setDialogIcon( const std::string & iconName );
138
145 virtual void setDialogTitle( const std::string & titleText );
146
152 virtual std::string getDialogTitle();
153
159 virtual void setDialogHeading( const std::string & headingText );
160
161
167 virtual std::string getDialogHeading();
168
169 //
170 // Steps handling
171 //
172
180 virtual void addStep( const std::string & text, const std::string & id );
181
189 virtual void addStepHeading( const std::string & text );
190
196 QList<YQWizard::Step*> stepsList() { return _stepsList; }
197
203 void copySteps( YQWizard *wizard);
204
211 virtual void deleteSteps();
212
218 virtual void setCurrentStep( const std::string & id );
219
224 QString currentStep() { return _currentStepID; };
225
232 virtual void updateSteps();
233
234
235 //
236 // Tree handling
237 //
238
247 virtual void addTreeItem( const std::string & parentID,
248 const std::string & text,
249 const std::string & id );
250
256 virtual void selectTreeItem( const std::string & id );
257
264 virtual std::string currentTreeSelection();
265
271 virtual void deleteTreeItems();
272
273
274 //
275 // Menu handling
276 //
277
286 virtual void addMenu( const std::string & text,
287 const std::string & id );
288
294 virtual void addSubMenu( const std::string & parentMenuID,
295 const std::string & text,
296 const std::string & id );
297
304 virtual void addMenuEntry( const std::string & parentMenuID,
305 const std::string & text,
306 const std::string & id );
307
313 virtual void addMenuSeparator( const std::string & parentMenuID );
314
320 virtual void deleteMenus();
321
322
323 //
324 // Misc
325 //
326
337 virtual void showReleaseNotesButton( const std::string & label,
338 const std::string & id );
339
345 virtual void hideReleaseNotesButton();
346
355 virtual void retranslateInternalButtons();
356
362 virtual bool eventFilter( QObject * obj, QEvent * ev );
363
368 QWidget * workArea() const { return _workArea; }
369
370
371 //
372 // Geometry management
373 //
374
380 virtual int preferredWidth();
381
387 virtual int preferredHeight();
388
394 virtual void setSize( int newWidth, int newHeight );
395
399 bool isSecondary() const;
400
401signals:
402
407
412
422
423
424public slots:
425
430 void resizeClientArea();
431
438 void showHelp();
439
443 void showHotkeys();
444
449 void showSteps();
450
455 void showTree();
456
457protected slots:
458
462 void slotBackClicked();
463
467 void slotAbortClicked();
468
472 void slotNextClicked();
473
478 void showReleaseNotes();
479
485 void sendTreeEvent( QTreeWidgetItem * item );
486
494
499 void sendMenuEvent( QAction *action );
500
505 void askForWidgetStyle();
506
507
508protected:
509
510 // Layout functions
511
512 void layoutTitleBar ( QWidget * parent );
513 QLayout *layoutSideBar ( QWidget * parent );
514 void layoutSideBarButtonBox ( QWidget * parent, QPushButton * button );
515 void layoutStepsPanel();
516 void layoutTreePanel();
517 QWidget *layoutWorkArea ( QWidget * parent );
518 void layoutClientArea ( QWidget * parent );
519 QLayout *layoutButtonBox ( QWidget * parent );
520 QToolButton *addStyleButton ( QWidget * parent );
521 bool titleIsOnTheLeft() const;
522 bool useBanner() const;
523
527 void destroyButtons();
528
532 void updateStepStates();
533
537 void sendEvent( const std::string & id );
538
544 void connectNotify ( const char * signal );
545
551 void disconnectNotify ( const char * signal );
552
556 void setButtonLabel( YQWizardButton * button, const QString & newLabel );
557
561 void enableButton( YQWizardButton * button, bool enabled );
562
567
571 YQWizard::Step * findStep( const QString & id );
572
578 YQWizard::TreeItem * findTreeItem( const std::string & id );
579
580
581 //
582 // Data members
583 //
584
585 std::string _backButtonLabel;
586 std::string _abortButtonLabel;
587 std::string _nextButtonLabel;
588
589 bool _stepsEnabled;
590 bool _stepsRegistered;
591 bool _treeEnabled;
592 bool _protectNextButton;
593 bool _stepsDirty;
594 bool _sendButtonEvents;
595 bool _forceBanner; // env Y2_FORCE_BANNER
596 bool _forceTitleLeft; // env Y2_FORCE_TITLE_LEFT
597 Direction _direction;
598
599 QString _currentStepID;
600 QString _qHelpText;
601 QString _qHotkeysText;
602
603 QY2HelpDialog * _helpDialog;
604 QY2HelpDialog * _hotkeysDialog;
605 QY2RelNotesDialog * _relNotesDialog;
606
607 QStackedWidget * _sideBar;
608 QWidget * _stepsPanel;
609 YQWizardButton * _releaseNotesButton;
610 static std::string _releaseNotesButtonId;
611 static std::string _releaseNotesButtonLabel;
612 YQWizardButton * _helpButton;
613 QAction * _helpAction;
614 QAction * _hotkeysAction;
615 QPushButton * _stepsButton;
616 QPushButton * _treeButton;
617 QFrame * _treePanel;
618 QY2ListView * _tree;
619 YQStyleButtonPos _styleButtonPos;
620 QToolButton * _styleButton;
621 QToolButton * _styleButton2;
622
623 QFrame * _workArea;
624 QWidget * _clientArea;
625 QMenuBar * _menuBar;
626 QLabel * _dialogIcon;
627 QLabel * _dialogLogo;
628 QLabel * _dialogBanner;
629 QLabel * _dialogHeading;
630 YQAlignment * _contents;
631 YQWizardButton * _backButton;
632 YQWizardButton * _abortButton;
633 YQWizardButton * _nextButton;
634 YReplacePoint * _contentsReplacePoint;
635
636 QList<YQWizard::Step*> _stepsList;
637 QHash<QString,YQWizard::Step*> _stepsIDs;
638 QHash<QString,YQWizard::TreeItem*> _treeIDs;
639 QHash<QString,QMenu*> _menuIDs;
640 QHash<QAction*, std::string> _menuEntryIDs;
641
642 QIcon _previousWindowIcon;
643
644private:
645 static YQWizard *main_wizard;
646
647protected:
648
652 class Step
653 {
654 public:
655
656 Step( const QString & name = "", const QString & id = "" )
657 : _name( name )
658 , _statusLabel( 0 )
659 , _nameLabel(0)
660 , _enabled( true )
661 , _idList( id )
662 , _status( Unset )
663 {}
664
668 virtual ~Step();
669
670 virtual bool isHeading() const { return false; }
671
672 enum Status { Unset, Todo, Current, Done };
673
674 QString name() const { return _name; }
675 QLabel * statusLabel() const { return _statusLabel; }
676 QLabel * nameLabel() const { return _nameLabel; }
677 bool isEnabled() const { return _enabled; }
678 const QStringList & id() const { return _idList; }
679 void addID( const QString & id ) { _idList.append( id ); }
680 virtual bool hasID( const QString & id ) { return _idList.indexOf( id ) != -1; }
681
682 void setStatusLabel( QLabel * label ) { _statusLabel = label; }
683 void setNameLabel ( QLabel * label ) { _nameLabel = label; }
684 void setEnabled( bool enabled ) { _enabled = enabled; }
685
686 void deleteLabels();
687
691 void setStatus( Status s );
692
693 protected:
694
695 QString _name;
696 QLabel * _statusLabel;
697 QLabel * _nameLabel;
698 bool _enabled;
699 QStringList _idList;
700 Status _status;
701
702 private:
703 Q_DISABLE_COPY(Step);
704 };
705
706
710 class StepHeading: public Step
711 {
712 public:
713
714 StepHeading( const QString & name = "" )
715 : Step( name, "" )
716 {}
717
718 virtual ~StepHeading() {}
719 virtual bool isHeading() const { return true; }
720 virtual bool hasID( const QString & id ) { return false; }
721
722 private:
723 Q_DISABLE_COPY(StepHeading);
724 };
725
726
731 {
732 public:
733 TreeItem( QY2ListView * parent,
734 const QString & text,
735 const QString & id )
736 : QY2ListViewItem( parent, text )
737 , _id( id )
738 {}
739
741 const QString & text,
742 const QString & id )
743 : QY2ListViewItem( parent, text )
744 , _id( id )
745 {}
746
747 virtual QString text(int index) const { return QTreeWidgetItem::text(index); }
748 QString text() const { return QTreeWidgetItem::text(0); }
749 QString id() const { return _id; }
750
751 private:
752 QString _id;
753 };
754
755}; // class YQWizard
756
757
758
759#endif // YQWizard_h
Definition QY2HelpDialog.h:37
Definition QY2ListView.h:234
Enhanced QTreeWidget.
Definition QY2ListView.h:48
Definition QY2RelNotesDialog.h:56
Definition YQAlignment.h:36
Definition YQWizardButton.h:38
Definition YQWizard.h:711
Definition YQWizard.h:653
virtual ~Step()
Definition YQWizard.cc:1660
void setStatus(Status s)
Definition YQWizard.cc:1666
Definition YQWizard.h:731
Definition YQWizard.h:64
virtual void addStep(const std::string &text, const std::string &id)
Definition YQWizard.cc:292
void destroyButtons()
Definition YQWizard.cc:1129
virtual int preferredHeight()
Definition YQWizard.cc:1527
virtual void addSubMenu(const std::string &parentMenuID, const std::string &text, const std::string &id)
Definition YQWizard.cc:1431
QList< YQWizard::Step * > stepsList()
Definition YQWizard.h:196
QWidget * workArea() const
Definition YQWizard.h:368
virtual void setCurrentStep(const std::string &id)
Definition YQWizard.cc:485
virtual std::string getDialogHeading()
Definition YQWizard.cc:1247
void sendEvent(const std::string &id)
Definition YQWizard.cc:1515
virtual std::string getDialogTitle()
Definition YQWizard.cc:1203
QString currentStep()
Definition YQWizard.h:224
void resizeClientArea()
Definition YQWizard.cc:1540
virtual void addMenuEntry(const std::string &parentMenuID, const std::string &text, const std::string &id)
Definition YQWizard.cc:1455
virtual void setSize(int newWidth, int newHeight)
Definition YQWizard.cc:1533
void showHotkeys()
Definition YQWizard.cc:1324
void slotNextClicked()
Definition YQWizard.cc:1297
void showHelp()
Definition YQWizard.cc:1308
void showReleaseNotes()
Definition YQWizard.cc:1371
virtual YQWizardButton * backButton() const
Definition YQWizard.h:111
virtual void deleteMenus()
Definition YQWizard.cc:1490
virtual void hideReleaseNotesButton()
Definition YQWizard.cc:1604
virtual ~YQWizard()
Definition YQWizard.cc:185
virtual void deleteSteps()
Definition YQWizard.cc:526
bool isSecondary() const
Definition YQWizard.cc:208
virtual void setDialogHeading(const std::string &headingText)
Definition YQWizard.cc:1209
YQWizard::Step * findStep(const QString &id)
Definition YQWizard.cc:541
void connectNotify(const char *signal)
Definition YQWizard.cc:1142
virtual int preferredWidth()
Definition YQWizard.cc:1521
void backClicked()
void abortClicked()
virtual bool eventFilter(QObject *obj, QEvent *ev)
Definition YQWizard.cc:1547
virtual void addStepHeading(const std::string &text)
Definition YQWizard.cc:328
void disconnectNotify(const char *signal)
Definition YQWizard.cc:1152
void setButtonLabel(YQWizardButton *button, const QString &newLabel)
void nextClicked()
virtual void selectTreeItem(const std::string &id)
Definition YQWizard.cc:636
void setButtonFocus(YQWizardButton *button)
void enableButton(YQWizardButton *button, bool enabled)
void showSteps()
Definition YQWizard.cc:1393
virtual void setHelpText(const std::string &helpText)
Definition YQWizard.cc:1270
virtual void showReleaseNotesButton(const std::string &label, const std::string &id)
Definition YQWizard.cc:1583
virtual void updateSteps()
Definition YQWizard.cc:335
YQWizard::TreeItem * findTreeItem(const std::string &id)
Definition YQWizard.cc:627
void sendTreeEvent(QTreeWidgetItem *item)
Definition YQWizard.cc:653
virtual void setDialogTitle(const std::string &titleText)
Definition YQWizard.cc:1192
virtual void addMenu(const std::string &text, const std::string &id)
Definition YQWizard.cc:1411
virtual std::string debugLabel() const
Definition YQWizard.cc:1255
void sendMenuEvent(QAction *action)
Definition YQWizard.cc:1502
void askForWidgetStyle()
Definition YQWizard.cc:1101
virtual void setButtonLabel(YPushButton *button, const std::string &newLabel)
virtual void addTreeItem(const std::string &parentID, const std::string &text, const std::string &id)
Definition YQWizard.cc:582
virtual void addMenuSeparator(const std::string &parentMenuID)
Definition YQWizard.cc:1475
virtual void retranslateInternalButtons()
Definition YQWizard.cc:1615
virtual void setDialogIcon(const std::string &iconName)
Definition YQWizard.cc:1162
void slotBackClicked()
Definition YQWizard.cc:1277
void slotAbortClicked()
Definition YQWizard.cc:1288
Direction direction() const
Definition YQWizard.h:100
virtual void deleteTreeItems()
Definition YQWizard.cc:617
void updateStepStates()
Definition YQWizard.cc:442
void treeSelectionChanged()
Definition YQWizard.cc:665
virtual std::string currentTreeSelection()
Definition YQWizard.cc:672
void copySteps(YQWizard *wizard)
Definition YQWizard.cc:494
void showTree()
Definition YQWizard.cc:1402