Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
/home/iurt/rpm/BUILD/canorus-0.7.R1002/src/ui/propertiesdialog.h
Go to the documentation of this file.
00001 
00008 #ifndef PROPERTIESDIALOG_H_
00009 #define PROPERTIESDIALOG_H_
00010 
00011 #include "ui_propertiesdialog.h"
00012 #include "ui_documentproperties.h"
00013 #include "ui_sheetproperties.h"
00014 #include "ui_staffproperties.h"
00015 #include "ui_voiceproperties.h"
00016 #include "ui_lyricscontextproperties.h"
00017 #include "ui_functionmarkcontextproperties.h"
00018 
00019 class QTreeWidgetItem;
00020 
00021 class CADocument;
00022 class CASheet;
00023 class CAStaff;
00024 class CAContext;
00025 class CAVoice;
00026 class CALyricsContext;
00027 class CAFunctionMarkContext;
00028 
00029 class CADocumentProperties : public QWidget, public Ui::uiDocumentProperties {
00030         Q_OBJECT
00031 public:
00032         CADocumentProperties( CADocument *doc, QWidget *parent=0 ) : QWidget( parent ) { _document = doc; setupUi(this); }
00033 public slots:
00034         void on_uiComposer_editingFinished();
00035 private:
00036         CADocument *_document;
00037 };
00038 
00039 class CASheetProperties : public QWidget, public Ui::uiSheetProperties {
00040 public:
00041         CASheetProperties( QWidget *parent=0 ) : QWidget( parent ) { setupUi(this); }
00042 };
00043 
00044 class CAStaffProperties : public QWidget, public Ui::uiStaffProperties {
00045 public:
00046         CAStaffProperties( QWidget *parent=0 ) : QWidget( parent ) { setupUi(this); }
00047 };
00048 
00049 class CAVoiceProperties : public QWidget, public Ui::uiVoiceProperties {
00050 public:
00051         CAVoiceProperties( QWidget *parent=0 ) : QWidget( parent ) { setupUi(this); }
00052 };
00053 
00054 class CALyricsContextProperties : public QWidget, public Ui::uiLyricsContextProperties {
00055 public:
00056         CALyricsContextProperties( QWidget *parent=0 ) : QWidget( parent ) { setupUi(this); }
00057 };
00058 
00059 class CAFunctionMarkContextProperties : public QWidget, public Ui::uiFunctionMarkContextProperties {
00060 public:
00061         CAFunctionMarkContextProperties( QWidget *parent=0 ) : QWidget( parent ) { setupUi(this); }
00062 };
00063 
00064 class CAPropertiesDialog : public QDialog, private Ui::uiPropertiesDialog
00065 {
00066         Q_OBJECT
00067 public:
00068         CAPropertiesDialog( CADocument *doc, QWidget *parent=0 );
00069         virtual ~CAPropertiesDialog();
00070         static void documentProperties( CADocument *doc, QWidget *parent );
00071         static void sheetProperties( CASheet *sheet, QWidget *parent );
00072         static void contextProperties( CAContext *context, QWidget *parent );
00073         static void voiceProperties( CAVoice *voice, QWidget *parent );
00074         
00075         inline CADocument *document() { return _document; }
00076         inline QTreeWidgetItem *documentItem() { return _documentItem; }
00077         inline QHash< QTreeWidgetItem*, CASheet* >& sheetItem() { return _sheetItem; }
00078         inline QHash< QTreeWidgetItem*, CAContext* >& contextItem() { return _contextItem; }
00079         inline QHash< QTreeWidgetItem*, CAVoice* >& voiceItem() { return _voiceItem; }
00080         
00081 public slots:
00082         void on_uiDocumentTree_currentItemChanged( QTreeWidgetItem *cur, QTreeWidgetItem *prev );
00083         void on_uiButtonBox_clicked( QAbstractButton* );
00084         void on_uiUp_clicked( bool );
00085         void on_uiDown_clicked( bool );
00086         
00087 private:
00088         void buildTree();
00089         
00090         void applyProperties();
00091         void createDocumentFromTree();
00092         void updateDocumentProperties( CADocument* );
00093         void updateSheetProperties( CASheet* );
00094         void updateStaffProperties( CAStaff* );
00095         void updateVoiceProperties( CAVoice* );
00096         void updateLyricsContextProperties( CALyricsContext* );
00097         void updateFunctionMarkContextProperties( CAFunctionMarkContext* );
00098         
00099         CADocument                           *_document;
00100         QTreeWidgetItem                      *_documentItem;             // Document => Document properties widget
00101         QWidget                              *_documentPropertiesWidget; // Document item in tree widget => Document
00102         QHash< CASheet*, QWidget* >           _sheetPropertiesWidget;    // Sheet => Sheet properties widget
00103         QHash< QTreeWidgetItem*, CASheet* >   _sheetItem;                // Sheet item in tree widget => Sheet
00104         QHash< CAContext*, QWidget* >         _contextPropertiesWidget;  // Context => Context properties widget
00105         QHash< QTreeWidgetItem*, CAContext* > _contextItem;              // Context item in tree widget => Context
00106         QHash< CAVoice*, QWidget* >           _voicePropertiesWidget;    // Voice => Voice properties widget
00107         QHash< QTreeWidgetItem*, CAVoice* >   _voiceItem;                // Voice item in tree widget => Voice
00108 };
00109 
00110 #endif /* PROPERTIESDIALOG_H_ */