Diffstat (limited to 'core/pim/datebook2/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/pim/datebook2/mainwindow.cpp | 97 |
1 files changed, 88 insertions, 9 deletions
diff --git a/core/pim/datebook2/mainwindow.cpp b/core/pim/datebook2/mainwindow.cpp index 44de6b0..68525b3 100644 --- a/core/pim/datebook2/mainwindow.cpp +++ b/core/pim/datebook2/mainwindow.cpp @@ -14,4 +14,5 @@ #include <qpe/resource.h> +#include "editor.h" #include "show.h" #include "templatemanager.h" @@ -23,5 +24,6 @@ using namespace Datebook; MainWindow::MainWindow() - : OPimMainWindow( "Datebook", 0, 0 ) { + : OPimMainWindow( "Datebook", 0, 0 ), m_descMan( "Descriptions" ), m_locMan( "Locations" ) +{ setIcon( Resource::loadPixmap( "datebook_icon" ) ); initUI(); @@ -30,5 +32,4 @@ MainWindow::MainWindow() initConfig(); - raiseCurrentView(); QTimer::singleShot(0, this, SLOT(populate() ) ); @@ -42,4 +43,10 @@ MainWindow::MainWindow() } MainWindow::~MainWindow() { + m_tempMan.save(); + m_locMan.save(); + m_descMan.save(); + + manager()->save(); + delete m_manager; } void MainWindow::doSetDocument( const QString& str ) { @@ -96,6 +103,10 @@ void MainWindow::initUI() { m_popTemplate = new QPopupMenu( this ); + m_popTemplate->setCheckable( TRUE ); + connect( m_popTemplate, SIGNAL(activated(int) ), + this, SLOT(slotNewFromTemplate(int) ) ); m_popView->insertItem(tr("New from template"), m_popTemplate, -1, 0); + QAction* a = new QAction( tr("New Event"), Resource::loadPixmap("new"), QString::null, 0, this, 0 ); @@ -131,4 +142,8 @@ void MainWindow::initUI() { connect(a, SIGNAL( activated() ), this, SLOT(slotConfigureDesc() ) ); + a = new QAction( tr("Configure Templates"), QString::null, 0, 0 ); + a->addTo( m_popSetting ); + connect(a, SIGNAL( activated() ), this, SLOT(slotConfigureTemp() ) ); + connect( qApp, SIGNAL(clockChanged(bool) ), this, SLOT(slotClockChanged(bool) ) ); @@ -147,6 +162,10 @@ void MainWindow::initView() { void MainWindow::initManagers() { m_manager = new BookManager; - m_locMan = new LocationManager( tr("Locations") ); - m_descMan = new DescriptionManager( tr("Descriptions") ); + + m_tempMan.load(); + m_locMan.load(); + m_descMan.load(); + + setTemplateMenu(); } void MainWindow::raiseCurrentView() { @@ -187,13 +206,19 @@ BookManager* MainWindow::manager() { return m_manager; } -TemplateManager* MainWindow::templateManager() { +TemplateManager MainWindow::templateManager() { return m_tempMan; } -LocationManager* MainWindow::locationManager() { +LocationManager MainWindow::locationManager() { return m_locMan; } -DescriptionManager* MainWindow::descriptionManager() { +DescriptionManager MainWindow::descriptionManager() { return m_descMan; } +void MainWindow::setLocationManager( const LocationManager& loc) { + m_locMan = loc; +} +void MainWindow::setDescriptionManager( const DescriptionManager& dsc ) { + m_descMan = dsc; +} Show* MainWindow::eventShow() { return m_show; @@ -203,8 +228,27 @@ void MainWindow::slotAction( QAction* act ) { } void MainWindow::slotConfigureLocs() { - + LocationManagerDialog dlg( locationManager() ); + dlg.setCaption( tr("Configure Locations") ); + dlg.showMaximized(); + if (dlg.exec() == QDialog::Accepted ) { + setLocationManager( dlg.manager() ); + } } void MainWindow::slotConfigureDesc() { - + DescriptionManagerDialog dlg( descriptionManager() ); + dlg.setCaption( tr("Configure Descriptions") ); + dlg.showMaximized(); + if (dlg.exec() == QDialog::Accepted ) { + setDescriptionManager( dlg.manager() ); + } +} +void MainWindow::slotConfigureTemp() { + TemplateDialog dlg( templateManager(), editor() ); + dlg.setCaption( tr("Configure Templates") ); + dlg.showMaximized(); + if ( dlg.exec() == QDialog::Accepted ) { + m_tempMan = dlg.manager(); + setTemplateMenu(); + } } void MainWindow::hideShow() { @@ -225,2 +269,37 @@ bool MainWindow::viewStartMonday()const { } +void MainWindow::setTemplateMenu() { + m_popTemplate->clear(); + + QStringList list = templateManager().names(); + for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { + m_popTemplate->insertItem( (*it) ); + } +} +/* + * get the name of the item with the id id + * then ask for an OEvent from the manager + */ +void MainWindow::slotNewFromTemplate(int id ) { + QString name = m_popTemplate->text( id ); + + OEvent ev = templateManager().value( name ); + + if ( editor()->edit( ev ) ) { + ev = editor()->event(); + ev.setUid( -1 ); + manager()->add( ev ); + + /* + * no we'll find out if the current view + * should show the new event + * and then we will ask it to refresh + * FIXME for now we'll call a refresh + */ + currentView()->reschedule(); + raiseCurrentView(); + } +} +Editor* MainWindow::editor() { + return m_edit; +} |