summaryrefslogtreecommitdiff
authorzecke <zecke>2003-05-12 13:21:59 (UTC)
committer zecke <zecke>2003-05-12 13:21:59 (UTC)
commit9a4c9544a59f8395f2ec5e7c99028570f8bd8bd1 (patch) (side-by-side diff)
tree8af13b984750f743b7f9f06bbf04b531b1a10ff2
parenta4c8b8912c9e87a2fd76103193e6b4f91c2a2c5d (diff)
downloadopie-9a4c9544a59f8395f2ec5e7c99028570f8bd8bd1.zip
opie-9a4c9544a59f8395f2ec5e7c99028570f8bd8bd1.tar.gz
opie-9a4c9544a59f8395f2ec5e7c99028570f8bd8bd1.tar.bz2
Hospital Hacking Session
make more translatable fix up GUI for Opie1.0 in regards what is implemnted implement setting and removing of Alarms!!!! Show Alarms once they got fired...
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/todo/mainwindow.cpp133
-rw-r--r--core/pim/todo/mainwindow.h5
-rw-r--r--core/pim/todo/otaskeditor.cpp13
-rw-r--r--core/pim/todo/quickeditimpl.cpp20
-rw-r--r--core/pim/todo/taskeditoralarms.cpp190
-rw-r--r--core/pim/todo/taskeditoralarms.h26
-rw-r--r--core/pim/todo/taskeditorstatus.cpp11
-rw-r--r--core/pim/todo/templatedialog.cpp10
-rw-r--r--core/pim/todo/templatedialogimpl.cpp10
-rw-r--r--core/pim/todo/templateeditor.cpp5
-rw-r--r--core/pim/todo/todomanager.cpp1
11 files changed, 373 insertions, 51 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp
index c5cedc6..5119ae0 100644
--- a/core/pim/todo/mainwindow.cpp
+++ b/core/pim/todo/mainwindow.cpp
@@ -27,31 +27,36 @@
*/
#include <unistd.h>
#include <qmenubar.h>
#include <qmessagebox.h>
#include <qtoolbar.h>
#include <qpopupmenu.h>
+#include <qpushbutton.h>
#include <qwidgetstack.h>
#include <qaction.h>
#include <qtimer.h>
#include <qvbox.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qwhatsthis.h>
#include <qpe/applnk.h>
#include <qpe/config.h>
#include <qpe/ir.h>
#include <qpe/resource.h>
#include <qpe/qpemessagebox.h>
+#include <qpe/alarmserver.h>
+#include <qpe/timestring.h>
+#include <qpe/qpeapplication.h>
#include <opie/orecur.h>
+#include <opie/opimnotifymanager.h>
#include <opie/otodoaccessvcal.h>
#include "quickeditimpl.h"
#include "todotemplatemanager.h"
#include "templateeditor.h"
#include "tableview.h"
#include "textviewshow.h"
@@ -296,31 +301,38 @@ QToolBar* MainWindow::toolbar() {
}
OTodoAccess::List MainWindow::list()const {
return m_todoMgr.list();
}
OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder ) {
int cat = 0;
if ( m_curCat != QWidget::tr("All Categories") )
cat = currentCatId();
+ if ( m_curCat == QWidget::tr("Unfiled") )
+ cat = -1;
+
+ qWarning(" Category %d %s", cat, m_curCat.latin1() );
int filter = 1;
if (!m_completed )
filter |= 4;
if (m_overdue)
filter |= 2;
return m_todoMgr.sorted( asc, sortOrder, filter, cat );
}
OTodoAccess::List MainWindow::sorted( bool asc, int sortOrder, int addFilter) {
int cat = 0;
if ( m_curCat != QWidget::tr("All Categories") )
cat = currentCatId();
+ if ( m_curCat == QWidget::tr("Unfiled") )
+ cat = -1;
+
return m_todoMgr.sorted(asc, sortOrder, addFilter, cat );
}
OTodo MainWindow::event( int uid ) {
return m_todoMgr.event( uid );
}
bool MainWindow::isSyncing()const {
return m_syncing;
}
@@ -445,16 +457,17 @@ void MainWindow::slotDelete() {
QMessageBox::warning(this, QWidget::tr("Todo"),
QWidget::tr("Can not edit data, currently syncing"));
return;
}
QString strName = currentView()->currentRepresentation();
if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), strName ) )
return;
+ handleAlarms( OTodo(), m_todoMgr.event( currentView()->current() ) );
m_todoMgr.remove( currentView()->current() );
currentView()->removeEvent( currentView()->current() );
raiseCurrentView();
}
void MainWindow::slotDeleteAll() {
if(m_syncing) {
QMessageBox::warning(this, QWidget::tr("Todo"),
QWidget::tr("Can not edit data, currently syncing"));
@@ -636,23 +649,24 @@ void MainWindow::slotShow( int uid ) {
void MainWindow::slotEdit( int uid ) {
if (uid == 1 ) return;
if(m_syncing) {
QMessageBox::warning(this, QWidget::tr("Todo"),
QWidget::tr("Can not edit data, currently syncing"));
return;
}
- OTodo todo = m_todoMgr.event( uid );
+ OTodo old_todo = m_todoMgr.event( uid );
- todo = currentEditor()->edit(this, todo );
+ OTodo todo = currentEditor()->edit(this, old_todo );
/* if completed */
if ( currentEditor()->accepted() ) {
qWarning("Replacing now" );
+ handleAlarms( old_todo, todo );
m_todoMgr.update( todo.uid(), todo );
currentView()->replaceEvent( todo );
/* a Category might have changed */
populateCategories();
}
raiseCurrentView();
}
@@ -761,16 +775,17 @@ int MainWindow::create() {
OTodo todo = currentEditor()->newTodo( currentCatId(),
this );
if ( currentEditor()->accepted() ) {
//todo.assignUid();
uid = todo.uid();
+ handleAlarms( OTodo(), todo );
m_todoMgr.add( todo );
currentView()->addEvent( todo );
// I'm afraid we must call this every time now, otherwise
// spend expensive time comparing all these strings...
// but only call if we changed something -zecke
populateCategories();
@@ -778,16 +793,19 @@ int MainWindow::create() {
raiseCurrentView( );
return uid;
}
/* delete it silently... */
bool MainWindow::remove( int uid ) {
if (m_syncing) return false;
+ /* argh need to get the whole OEvent... to disable alarms -zecke */
+ handleAlarms( OTodo(), m_todoMgr.event( uid ) );
+
return m_todoMgr.remove( uid );
}
void MainWindow::beam( int uid) {
::unlink( beamfile );
OTodo todo = event( uid );
OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) );
OTodoAccess acc( cal );
acc.load();
@@ -816,8 +834,119 @@ void MainWindow::add( const OPimRecord& rec) {
// I'm afraid we must call this every time now, otherwise
// spend expensive time comparing all these strings...
// but only call if we changed something -zecke
populateCategories();
}
void MainWindow::slotReturnFromView() {
raiseCurrentView();
}
+
+namespace {
+ OPimNotifyManager::Alarms findNonMatching( const OPimNotifyManager::Alarms& oldAls,
+ const OPimNotifyManager::Alarms& newAls ) {
+ OPimNotifyManager::Alarms nonMatching;
+ OPimNotifyManager::Alarms::ConstIterator oldIt = oldAls.begin();
+ OPimNotifyManager::Alarms::ConstIterator newIt;
+ for ( ; oldIt != oldAls.end(); ++oldIt ) {
+ bool found = false;
+ QDateTime oldDt = (*oldIt).dateTime();
+ for (newIt= newAls.begin(); newIt != newAls.end(); ++newIt ) {
+ if ( oldDt == (*newIt).dateTime() ) {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ nonMatching.append( (*oldIt) );
+ }
+ return nonMatching;
+ }
+ void addAlarms( const OPimNotifyManager::Alarms& als, int uid ) {
+ OPimNotifyManager::Alarms::ConstIterator it;
+ for ( it = als.begin(); it != als.end(); ++it ) {
+ qWarning("Adding alarm for %s", (*it).dateTime().toString().latin1() );
+ AlarmServer::addAlarm( (*it).dateTime(), "QPE/Application/todolist", "alarm(QDateTime,int)", uid );
+ }
+
+ }
+ void removeAlarms( const OPimNotifyManager::Alarms& als, int uid ) {
+ OPimNotifyManager::Alarms::ConstIterator it;
+ for ( it = als.begin(); it != als.end(); ++it ) {
+ qWarning("Removinf alarm for %s", (*it).dateTime().toString().latin1() );
+ AlarmServer::deleteAlarm( (*it).dateTime(), "QPE/Application/todolist", "alarm(QDateTime,int)", uid );
+ }
+ }
+}
+
+void MainWindow::handleAlarms( const OTodo& oldTodo, const OTodo& newTodo) {
+ /*
+ * if oldTodo is not empty and has notifiers we need to find the deleted ones
+ */
+ if(!oldTodo.isEmpty() && oldTodo.hasNotifiers() ) {
+ OPimNotifyManager::Alarms removed;
+ OPimNotifyManager::Alarms oldAls = oldTodo.notifiers().alarms();
+ if (!newTodo.hasNotifiers() )
+ removed = oldAls;
+ else
+ removed = findNonMatching( oldAls, newTodo.notifiers().alarms() );
+
+ removeAlarms( removed, oldTodo.uid() );
+ }
+ if ( newTodo.hasNotifiers() ) {
+ OPimNotifyManager::Alarms added;
+ if ( oldTodo.isEmpty() || !oldTodo.hasNotifiers() )
+ added = newTodo.notifiers().alarms();
+ else
+ added = findNonMatching( newTodo.notifiers().alarms(), oldTodo.notifiers().alarms() );
+
+ addAlarms( added, newTodo.uid() );
+ }
+}
+/* we might have not loaded the db */
+void MainWindow::doAlarm( const QDateTime& dt, int uid ) {
+ m_todoMgr.load();
+
+ OTodo todo = m_todoMgr.event( uid );
+ if (!todo.hasNotifiers() ) return;
+
+ /*
+ * let's find the right alarm and find out if silent
+ * then show a richtext widget
+ */
+ bool loud = false;
+ OPimNotifyManager::Alarms als = todo.notifiers().alarms();
+ OPimNotifyManager::Alarms::Iterator it;
+ for ( it = als.begin(); it != als.end(); ++it ) {
+ if ( (*it).dateTime() == dt ) {
+ loud = ( (*it).sound() == OPimAlarm::Loud );
+ break;
+ }
+ }
+ if (loud)
+ startAlarm();
+
+ QDialog dlg(this, 0, TRUE );
+ QVBoxLayout* lay = new QVBoxLayout( &dlg );
+ QTextView* view = new QTextView( &dlg );
+ lay->addWidget( view );
+ QPushButton* btnOk = new QPushButton( tr("Ok"), &dlg );
+ connect( btnOk, SIGNAL(clicked() ), &dlg, SLOT(accept() ) );
+ lay->addWidget( btnOk );
+
+ QString text = tr("<h1>Alarm at %0</h1><br>").arg( TimeString::dateString( dt ) );
+ text += todo.toRichText();
+ view->setText( text );
+
+ dlg.showMaximized();
+ bool needToStay = dlg.exec();
+
+ if (loud)
+ killAlarm();
+
+ if (needToStay) {
+ showMaximized();
+ raise();
+ QPEApplication::setKeepRunning();
+ setActiveWindow();
+ }
+
+}
diff --git a/core/pim/todo/mainwindow.h b/core/pim/todo/mainwindow.h
index 434e969..02e2449 100644
--- a/core/pim/todo/mainwindow.h
+++ b/core/pim/todo/mainwindow.h
@@ -99,16 +99,18 @@ private slots:
void populateCategories();
void slotReload();
void slotFlush();
protected:
void closeEvent( QCloseEvent* e );
private:
+ /* handle setting and removing alarms */
+ void handleAlarms( const OTodo& oldTodo, const OTodo& newTodo );
void receiveFile( const QString& filename );
void connectBase( ViewBase* );
void initUI();
void initActions();
void initConfig();
void initViews();
void initEditor();
void initShow();
@@ -190,12 +192,13 @@ private slots:
void flush();
void reload();
int create();
bool remove( int uid );
void beam(int uid);
void show( int uid );
void edit( int uid );
void add( const OPimRecord& );
+ void doAlarm( const QDateTime& dt, int uid );
};
-};
+}
#endif
diff --git a/core/pim/todo/otaskeditor.cpp b/core/pim/todo/otaskeditor.cpp
index e26d5e4..84f854f 100644
--- a/core/pim/todo/otaskeditor.cpp
+++ b/core/pim/todo/otaskeditor.cpp
@@ -37,23 +37,26 @@ void OTaskEditor::init( const OTodo& to ) {
}
OTodo OTaskEditor::todo()const{
qWarning("saving!");
OTodo to;
to.setUid(m_uid );
m_overView->save( to );
m_stat->save( to );
to.setRecurrence( m_rec->recurrence() );
+ m_alarm->save( to );
return to;
}
void OTaskEditor::load(const OTodo& to) {
m_overView->load( to );
m_stat->load( to );
m_rec->setRecurrence( to.recurrence(), to.hasDueDate() ? to.dueDate() : QDate::currentDate() );
+ m_alarm->setEnabled( !to.hasRecurrence() );
+ m_alarm->load( to );
}
void OTaskEditor::init() {
setCaption("Task Editor");
QVBoxLayout* layo = new QVBoxLayout( this );
m_tab = new OTabWidget( this );
layo->addWidget( m_tab );
@@ -64,22 +67,22 @@ void OTaskEditor::init() {
m_tab->addTab( m_overView, "todo/info", tr("Information") );
m_stat = new TaskEditorStatus( m_tab );
m_tab->addTab( m_stat, "todo/TodoList", tr("Status") );
m_alarm = new TaskEditorAlarms( m_tab );
m_tab->addTab( m_alarm, "todo/alarm", tr("Alarms") );
- m_remind = new TaskEditorAlarms( m_tab );
- m_tab->addTab( m_remind, "todo/reminder", tr("Reminders") );
+// m_remind = new TaskEditorAlarms( m_tab );
+// m_tab->addTab( m_remind, "todo/reminder", tr("Reminders") );
- QLabel* lbl = new QLabel( m_tab );
- lbl->setText( tr("X-Ref") );
- m_tab->addTab( lbl, "todo/xref", tr("X-Ref") );
+// QLabel* lbl = new QLabel( m_tab );
+// lbl->setText( tr("X-Ref") );
+// m_tab->addTab( lbl, "todo/xref", tr("X-Ref") );
m_rec = new ORecurranceWidget( true, QDate::currentDate(), this );
m_tab->addTab( m_rec, "repeat", tr("Recurrence") );
/* signal and slots */
connect(m_overView, SIGNAL(recurranceEnabled(bool) ),
m_rec, SLOT(setEnabled(bool) ) );
diff --git a/core/pim/todo/quickeditimpl.cpp b/core/pim/todo/quickeditimpl.cpp
index 91d3131..f4c7c47 100644
--- a/core/pim/todo/quickeditimpl.cpp
+++ b/core/pim/todo/quickeditimpl.cpp
@@ -20,42 +20,42 @@ QuickEditImpl::QuickEditImpl( QWidget* parent, bool visible )
priority1 = Resource::loadPixmap( "todo/priority1" );
priority3 = Resource::loadPixmap( "todo/priority3" );
priority5 = Resource::loadPixmap( "todo/priority5" );
m_lbl = new OClickableLabel( this );
m_lbl->setMinimumWidth( 15 );
m_lbl->setPixmap( priority3 );
connect(m_lbl, SIGNAL(clicked() ), this, SLOT(slotPrio()) );
- QWhatsThis::add( m_lbl, tr( "Click here to set the priority of new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
+ QWhatsThis::add( m_lbl, QWidget::tr( "Click here to set the priority of new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
m_edit = new QLineEdit( this );
setStretchableWidget( m_edit );
- QWhatsThis::add( m_edit, tr( "Enter description of new task here.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
-
- QAction *a = new QAction( tr( "More" ), Resource::loadPixmap( "todo/more" ), QString::null, 0, this, 0 );
+ QWhatsThis::add( m_edit, QWidget::tr( "Enter description of new task here.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
+
+ QAction *a = new QAction( QWidget::tr( "More" ), Resource::loadPixmap( "todo/more" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotMore() ) );
a->addTo( this );
- a->setWhatsThis( tr( "Click here to enter additional information for new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
+ a->setWhatsThis( QWidget::tr( "Click here to enter additional information for new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
- a = new QAction( tr( "Enter" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 );
+ a = new QAction( QWidget::tr( "Enter" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotEnter() ) );
a->addTo( this );
- a->setWhatsThis( tr( "Click here to add new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
+ a->setWhatsThis( QWidget::tr( "Click here to add new task.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
- a = new QAction( tr( "Cancel" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
+ a = new QAction( QWidget::tr( "Cancel" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( slotCancel() ) );
a->addTo( this );
- a->setWhatsThis( tr( "Click here to reset new task information.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
+ a->setWhatsThis( QWidget::tr( "Click here to reset new task information.\n\nThis area is called the quick task bar.\n\nIt allows you to quickly add a new task to your list. This area can be shown or hidden by selecting Options->'Show quick task bar' from the menu above." ) );
m_visible = visible;
if ( !m_visible ) {
hide();
}
-
+
m_menu = 0l;
reinit();
}
QuickEditImpl::~QuickEditImpl() {
}
OTodo QuickEditImpl::todo()const {
return m_todo;
diff --git a/core/pim/todo/taskeditoralarms.cpp b/core/pim/todo/taskeditoralarms.cpp
index 3cb5576..bff3338 100644
--- a/core/pim/todo/taskeditoralarms.cpp
+++ b/core/pim/todo/taskeditoralarms.cpp
@@ -23,54 +23,216 @@
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "taskeditoralarms.h"
+#include <opie/otodo.h>
+#include <opie/opimnotifymanager.h>
+#include <opie/otimepicker.h>
+
+#include <qpe/datebookmonth.h>
#include <qpe/resource.h>
+#include <qpe/timestring.h>
+#include <qdatetime.h>
#include <qlistview.h>
#include <qpushbutton.h>
+#include <qpopupmenu.h>
#include <qlayout.h>
#include <qwhatsthis.h>
-TaskEditorAlarms::TaskEditorAlarms( QWidget* parent, const char* name, WFlags fl )
+
+class AlarmItem : public QListViewItem {
+public:
+ AlarmItem( QListView*, const OPimAlarm& );
+ ~AlarmItem();
+
+ OPimAlarm alarm()const;
+ void setAlarm( const OPimAlarm& );
+private:
+ QDateTime m_dt;
+ int m_type;
+};
+AlarmItem::AlarmItem( QListView* view, const OPimAlarm& dt)
+ : QListViewItem(view) {
+ setAlarm( dt );
+}
+void AlarmItem::setAlarm( const OPimAlarm& dt ) {
+ m_dt = dt.dateTime();
+ m_type = dt.sound();
+ setText( 0, TimeString::dateString( m_dt.date() ) );
+ setText( 1, TimeString::timeString( m_dt.time() ) );
+ setText( 2, m_type == 0 ? QObject::tr("silent") : QObject::tr("loud") );
+}
+AlarmItem::~AlarmItem() {
+}
+OPimAlarm AlarmItem::alarm()const{
+ OPimAlarm al( m_type, m_dt );
+
+ return al;
+}
+
+TaskEditorAlarms::TaskEditorAlarms( QWidget* parent, int, const char* name, WFlags fl )
: QWidget( parent, name, fl )
{
- QGridLayout *layout = new QGridLayout( this, 2, 3, 4, 4 );
+ m_date = m_type = m_time = 0;
+ QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 4 );
lstAlarms = new QListView( this );
+ lstAlarms->addColumn( tr("Date") );
+ lstAlarms->addColumn( tr("Time") );
+ lstAlarms->addColumn( tr("Type") );
+
+ connect( lstAlarms, SIGNAL(clicked ( QListViewItem *, const QPoint &, int ) ),
+ this, SLOT(inlineEdit(QListViewItem*, const QPoint&, int ) ) );
+
layout->addMultiCellWidget( lstAlarms, 0, 0, 0, 2 );
QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), this );
//QWhatsThis::add( btn, tr( "Click here to add a new transaction." ) );
- //connect( btn, SIGNAL( clicked() ), this, SLOT( slotNew() ) );
+ connect( btn, SIGNAL( clicked() ), this, SLOT( slotNew() ) );
layout->addWidget( btn, 1, 0 );
-
+/* use when we've reminders too */
+#if 0
btn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), this );
//QWhatsThis::add( btn, tr( "Select a transaction and then click here to edit it." ) );
- //connect( btn, SIGNAL( clicked() ), this, SLOT( slotEdit() ) );
+ connect( btn, SIGNAL( clicked() ), this, SLOT( slotEdit() ) );
layout->addWidget( btn, 1, 1 );
+#endif
btn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), this );
//QWhatsThis::add( btn, tr( "Select a checkbook and then click here to delete it." ) );
- //connect( btn, SIGNAL( clicked() ), this, SLOT( slotDelete() ) );
+ connect( btn, SIGNAL( clicked() ), this, SLOT( slotDelete() ) );
layout->addWidget( btn, 1, 2 );
}
-TaskEditorAlarms::~TaskEditorAlarms()
-{
+TaskEditorAlarms::~TaskEditorAlarms(){
}
-void TaskEditorAlarms::slotNew()
-{
+void TaskEditorAlarms::slotNew(){
+ (void)new AlarmItem(lstAlarms, OPimAlarm(0, QDateTime::currentDateTime() ) );
}
-void TaskEditorAlarms::slotEdit()
-{
+void TaskEditorAlarms::slotEdit(){
}
-void TaskEditorAlarms::slotDelete()
-{
+void TaskEditorAlarms::slotDelete(){
+ QListViewItem* item = lstAlarms->currentItem();
+ if (!item) return;
+
+ lstAlarms->takeItem( item ); delete item;
+
+
+}
+
+void TaskEditorAlarms::load( const OTodo& todo) {
+ lstAlarms->clear();
+ if (!todo.hasNotifiers() ) return;
+
+ OPimNotifyManager::Alarms als = todo.notifiers().alarms();
+
+ if (als.isEmpty() ) return;
+
+ OPimNotifyManager::Alarms::Iterator it = als.begin();
+ for ( ; it != als.end(); ++it )
+ (void)new AlarmItem( lstAlarms, (*it) );
+
+
+}
+void TaskEditorAlarms::save( OTodo& todo ) {
+ if (lstAlarms->childCount() <= 0 ) return;
+
+ OPimNotifyManager::Alarms alarms;
+
+ for ( QListViewItem* item = lstAlarms->firstChild(); item; item = item->nextSibling() ) {
+ AlarmItem *alItem = static_cast<AlarmItem*>(item);
+ alarms.append( alItem->alarm() );
+ }
+
+ OPimNotifyManager& manager = todo.notifiers();
+ manager.setAlarms( alarms );
+}
+void TaskEditorAlarms::inlineEdit( QListViewItem* alarm, const QPoint& p, int col ) {
+ if (!alarm) return;
+
+ AlarmItem* item = static_cast<AlarmItem*>(alarm);
+ switch( col ) {
+ // date
+ case 0:
+ return inlineSetDate( item, p );
+ // time
+ case 1:
+ return inlineSetTime( item );
+ // type
+ case 2:
+ return inlineSetType( item, p );
+ }
+}
+void TaskEditorAlarms::inlineSetDate( AlarmItem* item, const QPoint& p ) {
+ QPopupMenu* pop = popup( 0 );
+ m_dbMonth->setDate( item->alarm().dateTime().date() );
+ pop->exec(p);
+
+ OPimAlarm al = item->alarm();
+ QDateTime dt = al.dateTime();
+ dt.setDate( m_dbMonth->selectedDate() );
+ al.setDateTime( dt );
+ item->setAlarm( al );
+}
+void TaskEditorAlarms::inlineSetType( AlarmItem* item, const QPoint& p ) {
+ int type;
+ QPopupMenu* pop = popup( 2 );
+ switch( pop->exec(p) ) {
+ case 10:
+ type = 1;
+ break;
+ case 20:
+ default:
+ type = 0;
+ }
+ OPimAlarm al = item->alarm();
+ al.setSound( type );
+ item->setAlarm( al );
+}
+void TaskEditorAlarms::inlineSetTime( AlarmItem* item ) {
+ OPimAlarm al = item->alarm();
+ QDateTime dt = al.dateTime();
+
+ OTimePickerDialog dialog;
+ dialog.setTime( dt.time() );
+ if ( dialog.exec() == QDialog::Accepted ) {
+ dt.setTime( dialog.time() );
+ al.setDateTime( dt );
+ item->setAlarm( al );
+ }
+}
+QPopupMenu* TaskEditorAlarms::popup( int column ) {
+ QPopupMenu* pop = 0;
+ switch( column ) {
+ case 0:{
+ if (!m_date) {
+ m_date = new QPopupMenu(this);
+ m_dbMonth = new DateBookMonth(m_date, 0, TRUE);
+ m_date->insertItem(m_dbMonth);
+ }
+ pop = m_date;
+ }
+ break;
+ case 1:
+ break;
+ case 2:{
+ if (!m_type) {
+ m_type = new QPopupMenu(this);
+ m_type->insertItem( QObject::tr("loud"), 10 );
+ m_type->insertItem( QObject::tr("silent"), 20 );
+ }
+ pop = m_type;
+ }
+ break;
+ default:
+ break;
+ }
+ return pop;
}
diff --git a/core/pim/todo/taskeditoralarms.h b/core/pim/todo/taskeditoralarms.h
index f77ded5..0aa52cc 100644
--- a/core/pim/todo/taskeditoralarms.h
+++ b/core/pim/todo/taskeditoralarms.h
@@ -1,11 +1,11 @@
/*
               =. This file is part of the OPIE Project
-             .=l. Copyright (c) 2002 <>
+             .=l. Copyright (c) 2002,2003 <>
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
@@ -27,26 +27,46 @@
*/
#ifndef TASKEDITORALARMS_H
#define TASKEDITORALARMS_H
#include <qwidget.h>
class QListView;
+class QListViewItem;
+class OTodo;
+class AlarmItem;
+class DateBookMonth;
class TaskEditorAlarms : public QWidget
-{
+{
Q_OBJECT
public:
- TaskEditorAlarms( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ enum Type {
+ Alarm = 0,
+ Reminders
+ };
+ TaskEditorAlarms( QWidget* parent = 0, int type = Alarm, const char* name = 0, WFlags fl = 0 );
~TaskEditorAlarms();
+ void load( const OTodo& );
+ void save( OTodo& );
+private:
+ QPopupMenu* popup( int column );
+ void inlineSetDate( AlarmItem*, const QPoint& p );
+ void inlineSetTime( AlarmItem*);
+ void inlineSetType( AlarmItem*, const QPoint& p );
QListView* lstAlarms;
+ QPopupMenu* m_date;
+ QPopupMenu* m_time;
+ QPopupMenu* m_type;
+ DateBookMonth* m_dbMonth;
protected slots:
void slotNew();
void slotEdit();
void slotDelete();
+ void inlineEdit( QListViewItem*, const QPoint& p, int );
};
#endif // TASKEDITORALARMS_H
diff --git a/core/pim/todo/taskeditorstatus.cpp b/core/pim/todo/taskeditorstatus.cpp
index 4331877..0ab4223 100644
--- a/core/pim/todo/taskeditorstatus.cpp
+++ b/core/pim/todo/taskeditorstatus.cpp
@@ -139,39 +139,41 @@ TaskEditorStatus::TaskEditorStatus( QWidget* parent, const char* name, WFlags f
btnComp->setPopup( popup );
connect( m_compBook, SIGNAL( dateClicked( int, int, int ) ),
this, SLOT( slotCompChanged( int, int, int ) ) );
QSpacerItem *spacer = new QSpacerItem( 5, 5, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding );
layout->addItem( spacer, 5, 0 );
// Maintainer mode
+#if 0
label = new QLabel( tr( "Maintainer Mode:" ), container );
layout->addWidget( label, 6, 0 );
QWhatsThis::add( label, tr( "Click here to set the maintainer's role." ) );
cmbMaintMode = new QComboBox( FALSE, container );
cmbMaintMode->insertItem( tr( "Nothing" ) );
cmbMaintMode->insertItem( tr( "Responsible" ) );
cmbMaintMode->insertItem( tr( "Done By" ) );
cmbMaintMode->insertItem( tr( "Coordinating" ) );
- layout->addMultiCellWidget( cmbMaintMode, 6, 6, 1, 2 );
+// layout->addMultiCellWidget( cmbMaintMode, 6, 6, 1, 2 );
QWhatsThis::add( cmbMaintMode, tr( "Click here to set the maintainer's role." ) );
// Maintainer
label = new QLabel( tr( "Maintainer:" ), container );
layout->addWidget( label, 7, 0 );
QWhatsThis::add( label, tr( "This is the name of the current task maintainer." ) );
txtMaintainer = new QLabel( tr( "test" ), container );
txtMaintainer->setTextFormat( QLabel::RichText );
layout->addWidget( txtMaintainer, 7, 1 );
QWhatsThis::add( txtMaintainer, tr( "This is the name of the current task maintainer." ) );
tbtMaintainer = new QToolButton( container );
tbtMaintainer->setPixmap( Resource::loadPixmap( "todo/more" ) );
- layout->addWidget( tbtMaintainer, 7, 2 );
+// layout->addWidget( tbtMaintainer, 7, 2 );
QWhatsThis::add( tbtMaintainer, tr( "Click here to select the task maintainer." ) );
+#endif
}
TaskEditorStatus::~TaskEditorStatus()
{
}
void TaskEditorStatus::load( const OTodo &todo )
{
@@ -211,21 +213,22 @@ void TaskEditorStatus::load( const OTodo &todo )
{
m_comp = todo.completedDate();
btnComp->setText( TimeString::longDateString( m_comp ) );
}
else
btnComp->setText( str );
// Maintainer Mode
+#if 0
state = todo.hasMaintainer() ? todo.maintainer().mode() : OPimMaintainer::Nothing;
if ( state == OPimMaintainer::Undefined )
state = OPimMaintainer::Nothing;
cmbMaintMode->setCurrentItem( state );
-
+#endif
// Maintainer - not implemented yet
}
void TaskEditorStatus::save( OTodo &todo )
{
QDate inval;
// Status
@@ -255,21 +258,23 @@ void TaskEditorStatus::save( OTodo &todo )
todo.setCompleted( ckbComp->isChecked() );
if ( ckbComp->isChecked() )
{
todo.setCompletedDate( m_comp );
}
else
todo.setCompletedDate( inval );
+#if 0
// Maintainer mode - not implemented yet
// Maintainer
/* TODO - resolve name to uid.....*/
todo.setMaintainer( OPimMaintainer( cmbMaintMode->currentItem(), -10 ) );
+#endif
}
void TaskEditorStatus::slotStartChecked()
{
btnStart->setEnabled( ckbStart->isChecked() );
}
void TaskEditorStatus::slotCompChecked()
diff --git a/core/pim/todo/templatedialog.cpp b/core/pim/todo/templatedialog.cpp
index c94f69c..8dfbd0b 100644
--- a/core/pim/todo/templatedialog.cpp
+++ b/core/pim/todo/templatedialog.cpp
@@ -4,32 +4,34 @@
#include <qlistview.h>
#include <qlineedit.h>
#include "templatedialog.h"
using namespace Todo;
+/* TRANSLATOR Todo::TemplateDialog */
+
TemplateDialog::TemplateDialog( QWidget* widget )
: QDialog( widget, "TemplateDialog", TRUE )
{
- setCaption( tr("Template Editor") );
+ setCaption( QWidget::tr("Template Editor") );
m_main = new QVBoxLayout(this );
m_list = new QListView( this );
m_main->addWidget( m_list, 100 );
m_lne = new QLineEdit( this );
m_main->addWidget( m_lne );
m_btnBar = new QHBox( this );
- m_add = new QPushButton( tr("Add"), m_btnBar );
- m_edit = new QPushButton( tr("Edit"), m_btnBar );
- m_rem = new QPushButton( tr("Remove"), m_btnBar );
+ m_add = new QPushButton( QWidget::tr("Add"), m_btnBar );
+ m_edit = new QPushButton( QWidget::tr("Edit"), m_btnBar );
+ m_rem = new QPushButton( QWidget::tr("Remove"), m_btnBar );
m_main->addWidget( m_btnBar );
connect(m_add, SIGNAL(clicked() ),
this, SLOT(slotAdd() ) );
connect(m_edit, SIGNAL(clicked() ),
this, SLOT(slotEdit() ) );
connect(m_rem, SIGNAL(clicked() ),
this, SLOT(slotRemove() ) );
diff --git a/core/pim/todo/templatedialogimpl.cpp b/core/pim/todo/templatedialogimpl.cpp
index 77c5363..fed92f0 100644
--- a/core/pim/todo/templatedialogimpl.cpp
+++ b/core/pim/todo/templatedialogimpl.cpp
@@ -4,16 +4,18 @@
#include "mainwindow.h"
#include "todoeditor.h"
#include "todotemplatemanager.h"
#include "templatedialogimpl.h"
using namespace Todo;
+/* TRANSLATOR Todo::TemplateDialogImpl */
+
namespace {
class TemplateListItem : public QListViewItem {
public:
TemplateListItem( QListView*,
const QString& name,
const OTodo& );
~TemplateListItem();
@@ -56,45 +58,43 @@ TemplateDialogImpl::TemplateDialogImpl( MainWindow* win,
{
/* fill the listview */
/* not the fastest way.... */
QStringList list = man->templates();
for (QStringList::Iterator it = list.begin();
it != list.end(); ++it ) {
new TemplateListItem( listView(), (*it), man->templateEvent( (*it) ) );
}
- listView()->addColumn( tr("Name") );
+ listView()->addColumn( QWidget::tr("Name") );
connect( listView(), SIGNAL(clicked(QListViewItem*) ),
this, SLOT(slotClicked(QListViewItem*) ) );
}
TemplateDialogImpl::~TemplateDialogImpl() {
}
void TemplateDialogImpl::slotAdd() {
- QString str = tr("New Template %1").arg( listView()->childCount() );
+ QString str = QWidget::tr("New Template %1").arg( listView()->childCount() );
OTodo ev;
m_man->addEvent(str, ev);
new TemplateListItem( listView(), str, ev );
}
void TemplateDialogImpl::slotRemove() {
TemplateListItem* item = (TemplateListItem*) listView()->currentItem();
listView()->takeItem( item );
m_man->removeEvent( item->text() );
delete item;
}
void TemplateDialogImpl::slotEdit() {
TemplateListItem* item = (TemplateListItem*)listView()->currentItem();
OTodo ev = m_win->currentEditor()->edit( m_win, item->event() );
if ( m_win->currentEditor()->accepted() ) {
- qWarning("accepted");
item->setEvent( ev );
- qWarning("Priority %d", ev.priority() );
m_man->removeEvent( item->text() );
m_man->addEvent( item->text(), ev );
}
}
/*
* we need to update
* the text
*/
@@ -108,12 +108,12 @@ void TemplateDialogImpl::slotReturn() {
m_man->addEvent( tbl->text(), tbl->event() );
}
}
/* update the lineedit when changing */
void TemplateDialogImpl::slotClicked( QListViewItem* item) {
if (!item)
return;
- TemplateListItem* tbl = (TemplateListItem*)item;
+ TemplateListItem* tbl = static_cast<TemplateListItem*>(item);
edit()->setText( tbl->text() );
}
diff --git a/core/pim/todo/templateeditor.cpp b/core/pim/todo/templateeditor.cpp
index 3930428..ca02173 100644
--- a/core/pim/todo/templateeditor.cpp
+++ b/core/pim/todo/templateeditor.cpp
@@ -24,16 +24,15 @@ void TemplateEditor::init() {
QAction* a = new QAction( QString::null, QWidget::tr("Configure Templates"),
0, this, 0, FALSE );
connect(a, SIGNAL(activated() ),
this, SLOT(setUp() ) );
a->addTo( m_main->options() );
}
void TemplateEditor::setUp() {
- qWarning("set up");
TemplateDialogImpl dlg(m_main, m_man );
int ret= dlg.exec();
- if (QDialog::Accepted != ret ) {
+ if (QDialog::Accepted != ret )
m_man->load();
- }else
+ else
m_main->populateTemplates();
}
diff --git a/core/pim/todo/todomanager.cpp b/core/pim/todo/todomanager.cpp
index b5b87de..df2e711 100644
--- a/core/pim/todo/todomanager.cpp
+++ b/core/pim/todo/todomanager.cpp
@@ -117,13 +117,12 @@ void TodoManager::remove( const QArray<int>& ids) {
for (uint i=0; i < ids.size(); i++ )
remove( ids[i] );
}
bool TodoManager::isLoaded()const {
return (m_db == 0 );
}
void TodoManager::load() {
if (!m_db) {
- qWarning("loading!");
m_db = new OTodoAccess();
m_db->load();
}
}