summaryrefslogtreecommitdiffabout
path: root/kaddressbook/old_mainwindow.cpp
Side-by-side diff
Diffstat (limited to 'kaddressbook/old_mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/old_mainwindow.cpp1561
1 files changed, 1561 insertions, 0 deletions
diff --git a/kaddressbook/old_mainwindow.cpp b/kaddressbook/old_mainwindow.cpp
new file mode 100644
index 0000000..0e886d9
--- a/dev/null
+++ b/kaddressbook/old_mainwindow.cpp
@@ -0,0 +1,1561 @@
+#include <qlabel.h>
+#include <qapp.h>
+#include <qmessagebox.h>
+#include <qaction.h>
+
+#include <kdebug.h> // defined kdDebug()
+#include <klocale.h> // defines i18n (microkde)
+
+#include "kabprefs.h"
+
+#ifndef DESKTOP_VERSION
+#include <qpe/qpetoolbar.h>
+#include <qpe/qpemenubar.h>
+#include <qpe/resource.h>
+#else
+#include <qtoolbar.h>
+#include <qmenubar.h>
+#include <resource.h>
+#endif
+
+/*
+#include <stdlib.h>
+
+#include <qaction.h>
+#include <qpainter.h>
+#include <qwhatsthis.h>
+#include <qpopupmenu.h>
+#include <qmessagebox.h>
+#include <qlineedit.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qwmatrix.h>
+#ifndef DESKTOP_VERSION
+#include <qpe/global.h>
+#include <qpe/qpemenubar.h>
+#include <qpe/qpetoolbar.h>
+#include <qpe/resource.h>
+#include <qpe/qpeapplication.h>
+#include <qtopia/alarmserver.h>
+#include <qtopia/qcopenvelope_qws.h>
+#else
+#include <qtoolbar.h>
+#include <qdir.h>
+#include <qapplication.h>
+//#include <resource.h>
+#endif
+
+#include <libkcal/calendarlocal.h>
+#include <libkcal/todo.h>
+
+//#include "calendarview.h"
+//#include "koviewmanager.h"
+//#include "koagendaview.h"
+//#include "kodialogmanager.h"
+//#include "kdialogbase.h"
+//#include "koprefs.h"
+//#include "kfiledialog.h"
+//#include "koglobals.h"
+
+//#include "kconfig.h"
+//#include "simplealarmclient.h"
+*/
+//US using namespace KACore;
+
+
+#include "mainwindow.h"
+
+MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
+ QMainWindow( parent, name )
+{
+
+#ifdef DESKTOP_VERSION
+ setFont( QFont("Arial"), 14 );
+#endif
+// mBlockAtStartup = true;
+ kdDebug() << "MainWindow()::MainWindow()" << endl;
+// mFlagKeyPressed = false;
+ setCaption("KAddressbook/Pi");
+
+ KABPrefs *p = KABPrefs::instance();
+ if ( QApplication::desktop()->height() > 480 ) {
+//US if ( p->mHourSize == 4 )
+//US p->mHourSize = 6;
+ }
+
+ QMainWindow::ToolBarDock tbd;
+ if ( p->mToolBarHor ) {
+ if ( p->mToolBarUp )
+ tbd = Bottom;
+ else
+ tbd = Top;
+ }
+ else {
+ if ( p->mToolBarUp )
+ tbd = Right;
+ else
+ tbd = Left;
+ }
+
+ iconToolBar = new QPEToolBar( this );
+ addToolBar (iconToolBar , tbd );
+
+/*US
+ mBlockSaveFlag = false;
+ mCalendarModifiedFlag = false;
+*/
+ QLabel* splash = new QLabel(i18n("KA/Pi is starting ... "), this );
+ splash->setAlignment ( AlignCenter );
+ setCentralWidget( splash );
+#ifndef DESKTOP_VERSION
+ showMaximized();
+#endif
+ qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
+// setDefaultPreferences();
+/* mCalendar = new CalendarLocal();
+ mView = new CalendarView( mCalendar, this,"mCalendar " );
+ mView->hide();
+ //mView->resize(splash->size() );
+*/
+ initActions();
+
+#ifndef DESKTOP_VERSION
+//US iconToolBar->show();
+ qApp->processEvents();
+#endif
+ qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
+
+ int vh = height() ;
+ int vw = width();
+ qDebug("Toolbar hei %d ",iconToolBar->height() );
+/*US if ( iconToolBar->orientation () == Qt:: Horizontal ) {
+ vh -= iconToolBar->height();
+ } else {
+ vw -= iconToolBar->height();
+ }
+*/
+ //mView->setMaximumSize( splash->size() );
+ //mView->resize( splash->size() );
+ //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
+/* mView->readSettings();
+ if( !QFile::exists( defaultFileName() ) ) {
+ mView->saveCalendar( defaultFileName() );
+ }
+ mView->openCalendar( defaultFileName() );
+ processIncidenceSelection( 0 );
+ connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
+ SLOT( processIncidenceSelection( Incidence * ) ) );
+ connect( mView, SIGNAL( modifiedChanged( bool ) ),
+ SLOT( slotModifiedChanged( bool ) ) );
+ connect( mView, SIGNAL( signalmodified() ),
+ SLOT( checkAlarms( ) ) );
+
+ connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
+ connect( &alarmTimer, SIGNAL( timeout() ), SLOT( writeAlarm() ) );
+ mView->setModified( false );
+ mBlockAtStartup = false;
+ mView->setModified( false );
+ setCentralWidget( mView );
+ mView->show();
+*/
+ delete splash;
+
+ qApp->processEvents();
+//US qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
+
+}
+MainWindow::~MainWindow()
+{
+ qDebug("MainWindow::~MainWindow() ");
+ kdDebug() << "MainWindow()::~MainWindow()" << endl;
+ //save toolbar location
+/*
+ KOPrefs *p = KOPrefs::instance();
+ p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
+ p->mToolBarUp = iconToolBar->x() > width()/2 ||
+ iconToolBar->y() > height()/2;
+ alarmTimer.stop();
+ mView->writeSettings();
+ writeAlarm();
+ if ( mCalendarModifiedFlag )
+ save();
+ delete mCalendar;
+*/
+}
+
+
+void MainWindow::closeEvent( QCloseEvent* ce )
+{
+
+ if ( ! KABPrefs::instance()->mAskForQuit ) {
+
+ ce->accept();
+ return;
+
+ }
+
+ switch( QMessageBox::information( this, "KA/Pi",
+ i18n("Do you really want\nto close KA/Pi?"),
+ i18n("Close!"), i18n("No"),
+ 0, 0 ) ) {
+ case 0:
+ ce->accept();
+ break;
+ case 1:
+ ce->ignore();
+ break;
+ case 2:
+
+ default:
+ break;
+ }
+
+
+}
+
+
+void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
+{
+/*
+ QDataStream stream( data, IO_ReadOnly );
+ // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
+
+
+ if ( cmsg == "-writeFile" ) {
+ mView->viewManager()->showWhatsNextView();
+ save();
+ setCaption( i18n("File written on AD request"));
+ showMaximized();
+ raise();
+#ifndef DESKTOP_VERSION
+ QCopEnvelope e3("kosaved", "blabla");
+#endif
+ return;
+
+ }
+ if ( cmsg == "-newCountdown" ) {
+ qDebug("newCountdown ");
+
+ }
+ QString msg ;;
+ QString allmsg = cmsg;
+ while ( allmsg.length() > 0 ) {
+ int nextC = allmsg.find( "-", 1 );
+ if ( nextC == -1 ) {
+ msg = allmsg;
+ allmsg = "";
+ } else{
+ msg = allmsg.left( nextC );
+ allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
+ }
+ //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
+ if ( msg == "-newEvent" ) {
+ mView->newEvent();
+ }
+ if ( msg == "-newTodo" ) {
+ mView->newTodo();
+
+ }
+ if ( msg == "-showWN" ) {
+ mView->viewManager()->showWhatsNextView();
+ }
+ if ( msg == "-showTodo" ) {
+ mView->viewManager()->showTodoView();
+ }
+ if ( msg == "-showList" ) {
+ mView->viewManager()->showListView();
+ }
+ else if ( msg == "-showDay" ) {
+ mView->viewManager()->showDayView();
+ }
+ else if ( msg == "-showWWeek" ) {
+ mView->viewManager()->showWorkWeekView();
+ }
+ else if ( msg == "-showWeek" ) {
+ mView->viewManager()->showWeekView();
+ }
+ else if ( msg == "-showTodo" ) {
+ mView->viewManager()->showTodoView();
+ }
+ else if ( msg == "-showJournal" ) {
+ mView->viewManager()->showJournalView();
+ }
+ else if ( msg == "-showKO" ) {
+ mView->viewManager()->showNextXView();
+ }
+ else if ( msg == "-showWNext" ) {
+ mView->viewManager()->showWhatsNextView();
+ }
+ }
+
+ showMaximized();
+ raise();
+*/
+}
+
+
+QPixmap MainWindow::loadPixmap( QString name )
+{
+ return KGlobal::iconLoader().loadPixmap( name );
+/*US use the advanced version of the iconloader
+#ifdef DESKTOP_VERSION
+ QPixmap pixmapLoader;
+ QString file;
+ file = QDir::homeDirPath()+"/kaddressbook/pics/" + name+".png";
+ //qDebug("pixmap name %s ", file.latin1());
+ pixmapLoader.load( file );
+ return pixmapLoader;
+#else
+ return Resource::loadPixmap( name );
+#endif
+*/
+}
+
+void MainWindow::initActions()
+{
+ iconToolBar->clear();
+ KABPrefs *p = KABPrefs::instance();
+ QPEMenuBar *menuBar1 = new QPEMenuBar( iconToolBar );
+ QPopupMenu *menuBar = new QPopupMenu( this );
+ menuBar1->insertItem( "ME", menuBar);
+ QPopupMenu *fileMenu = new QPopupMenu( this );
+ QPopupMenu *editMenu = new QPopupMenu( this );
+ QPopupMenu *viewMenu = new QPopupMenu( this );
+ QPopupMenu *settingsMenu = new QPopupMenu( this );
+ QPopupMenu *importMenu = new QPopupMenu( this );
+
+ menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
+
+ QIconSet icon;
+
+
+ icon = loadPixmap( pathString + "newtodo" );
+ configureToolBarMenu->insertItem(icon, "New todo", 20 );
+ QAction* nt_action = new QAction( "New Todo", icon, "New Todo...", 0, this );
+ nt_action->addTo( actionMenu );
+ connect( nt_action, SIGNAL( activated() ),
+ mView, SLOT( newTodo() ) );
+
+/*
+ QAction *action;
+ QIconSet icon;
+ // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
+ configureToolBarMenu = new QPopupMenu( this );
+ configureToolBarMenu->setCheckable( true );
+#ifdef DESKTOP_VERSION
+ QString pathString = "";
+#else
+ QString pathString = "kaddressbook/";
+#endif
+ if ( QApplication::desktop()->width() < 480 )
+ pathString += "icons16/";
+ configureAgendaMenu = new QPopupMenu( menuBar );
+ configureAgendaMenu->setCheckable( true );
+ configureAgendaMenu->insertItem("Toggle Allday", 1 );
+ configureAgendaMenu->insertSeparator();
+ configureAgendaMenu->insertItem("Tiny", 4 );
+ configureAgendaMenu->insertItem("Small", 6 );
+ configureAgendaMenu->insertItem("Medium", 8 );
+ configureAgendaMenu->insertItem("Normal", 10 );
+ configureAgendaMenu->insertItem("Large", 12 );
+ configureAgendaMenu->insertItem("Big", 14 );
+ configureAgendaMenu->insertItem("Bigger", 16 );
+ configureAgendaMenu->insertItem("Biggest", 18 );
+ //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
+ icon = loadPixmap( pathString + "newevent" );
+ icon = loadPixmap( pathString + "newevent" );
+ configureToolBarMenu->insertItem("Stretched TB", 5 );
+ configureToolBarMenu->insertSeparator();
+ configureToolBarMenu->insertItem(icon, "New event", 10 );
+ QAction* ne_action = new QAction( "New Event", icon, "New Event...", 0, this );
+ ne_action->addTo( actionMenu );
+*/
+/*
+ connect( ne_action, SIGNAL( activated() ),
+ mView, SLOT( newEvent() ) );
+ icon = loadPixmap( pathString + "newtodo" );
+ configureToolBarMenu->insertItem(icon, "New todo", 20 );
+ QAction* nt_action = new QAction( "New Todo", icon, "New Todo...", 0, this );
+ nt_action->addTo( actionMenu );
+ connect( nt_action, SIGNAL( activated() ),
+ mView, SLOT( newTodo() ) );
+
+ action = new QAction( "Toggle FilterView", QPixmap(), "Toggle FilterView", 0, this );
+ action->addTo( viewMenu );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( toggleFilter() ) );
+
+ viewMenu->insertSeparator();
+ icon = loadPixmap( pathString + "picker" );
+ action = new QAction( "Date Picker", icon, "Date Picker", 0, this );
+ action->addTo( viewMenu );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( showDatePicker() ) );
+ action->addTo( iconToolBar );
+ viewMenu->insertSeparator();
+ icon = loadPixmap( pathString + "list" );
+ configureToolBarMenu->insertItem(icon, "Event list", 30 );
+ QAction* showlist_action = new QAction( "List", icon, "List", 0, this );
+ showlist_action->addTo( viewMenu );
+ connect( showlist_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showListView() ) );
+
+
+ icon = loadPixmap( pathString + "day" );
+ configureToolBarMenu->insertItem(icon, "One day", 40 );
+ QAction* day1_action = new QAction( "Day", icon, "Day", 0, this );
+ day1_action->addTo( viewMenu );
+ // action->addTo( toolBar );
+ connect( day1_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showDayView() ) );
+
+ icon = loadPixmap( pathString + "workweek" );
+ configureToolBarMenu->insertItem(icon, "Work week", 50 );
+ QAction* day5_action = new QAction( "Work Week", icon, "Work Week", 0, this );
+ day5_action->addTo( viewMenu );
+ connect( day5_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showWorkWeekView() ) );
+
+ icon = loadPixmap( pathString + "week" );
+ configureToolBarMenu->insertItem(icon, "Week", 60 );
+ QAction* day7_action = new QAction( "Week", icon, "Week", 0, this );
+ day7_action->addTo( viewMenu );
+ connect( day7_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showWeekView() ) );
+
+ icon = loadPixmap( pathString + "month" );
+ configureToolBarMenu->insertItem(icon, "Month", 70 );
+ QAction* month_action = new QAction( "Month", icon, "Month", 0, this );
+ month_action->addTo( viewMenu );
+ connect( month_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showMonthView() ) );
+
+ icon = loadPixmap( pathString + "todo" );
+ configureToolBarMenu->insertItem(icon, "Todo list", 80 );
+ QAction* todoview_action = new QAction( "Todo", icon, "Todo", 0, this );
+ todoview_action->addTo( viewMenu );
+ connect( todoview_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showTodoView() ) );
+
+ icon = loadPixmap( pathString + "journal" );
+ configureToolBarMenu->insertItem(icon, "Journal", 90 );
+ QAction* viewjournal_action = new QAction( "Journal", icon, "Journal", 0, this );
+ viewjournal_action->addTo( viewMenu );
+ connect( viewjournal_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showJournalView() ) );
+
+ icon = loadPixmap( pathString + "xdays" );
+ configureToolBarMenu->insertItem(icon, "Next days", 100,4 );
+ QAction* xdays_action = new QAction( "Next days", icon, "Next Days", 0, this );
+ xdays_action->addTo( viewMenu );
+ connect( xdays_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showNextXView() ) );
+
+ icon = loadPixmap( pathString + "whatsnext" );
+ configureToolBarMenu->insertItem(icon, "Whats next", 110, 4 );
+ QAction* whatsnext_action = new QAction( "What's Next", icon, "What's Next", 0, this );
+ whatsnext_action->addTo( viewMenu );
+ connect( whatsnext_action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showWhatsNextView() ) );
+
+#if 0
+ action = new QAction( "view_timespan", "Time Span", 0, this );
+ action->addTo( viewMenu );
+ connect( action, SIGNAL( activated() ),
+ mView->viewManager(), SLOT( showTimeSpanView() ) );
+#endif
+
+ menuBar->insertItem( "View", viewMenu );
+
+
+#if 0
+ QPopupMenu *navigationMenu = new QPopupMenu( menuBar );
+
+ action = new QAction( "Go backward", "Go Backward", 0, navigationMenu );
+ action->addTo( navigationMenu );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( goPrevious() ) );
+
+ action = new QAction( "Go forward", "Go Forward", 0, navigationMenu );
+ action->addTo( navigationMenu );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( goNext() ) );
+
+ menuBar->insertItem( "Go", navigationMenu );
+#endif
+
+
+
+
+
+
+ mNewSubTodoAction = new QAction( "new_subtodo", "New Sub-Todo...", 0,
+ this );
+ mNewSubTodoAction->addTo( actionMenu );
+ connect( mNewSubTodoAction, SIGNAL( activated() ),
+ mView, SLOT( newSubTodo() ) );
+
+ actionMenu->insertSeparator();
+
+ mShowAction = new QAction( "show_incidence", "Show...", 0, this );
+ mShowAction->addTo( actionMenu );
+ connect( mShowAction, SIGNAL( activated() ),
+ mView, SLOT( showIncidence() ) );
+
+ mEditAction = new QAction( "edit_incidence", "Edit...", 0, this );
+ mEditAction->addTo( actionMenu );
+ connect( mEditAction, SIGNAL( activated() ),
+ mView, SLOT( editIncidence() ) );
+
+ mDeleteAction = new QAction( "delete_incidence", "Delete...", 0, this );
+ mDeleteAction->addTo( actionMenu );
+ connect( mDeleteAction, SIGNAL( activated() ),
+ mView, SLOT( deleteIncidence() ) );
+
+ actionMenu->insertSeparator();
+
+ action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
+ this );
+ action->addTo( actionMenu );
+ connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
+
+ icon = loadPixmap( pathString + "search" );
+ QAction* search_action = new QAction( "search", icon, "Search...", 0, this );
+ configureToolBarMenu->insertItem(icon, "Search", 120 , 4);
+ search_action->addTo( actionMenu );
+ connect( search_action, SIGNAL( activated() ),
+ mView->dialogManager(), SLOT( showSearchDialog() ) );
+
+ icon = loadPixmap( pathString + "today" );
+ configureToolBarMenu->insertItem(icon, "Today", 130);
+ QAction* today_action = new QAction( "Today", icon, "Go to Today", 0, this );
+ today_action->addTo( actionMenu );
+ connect( today_action, SIGNAL( activated() ),
+ mView, SLOT( goToday() ) );
+
+ //#if 0
+ actionMenu->insertSeparator();
+
+ action = new QAction( "configure", "Configure...", 0, this );
+ action->addTo( actionMenu );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( edit_options() ) );
+ //#endif
+
+ // actionMenu->insertSeparator();
+ action = new QAction( "import_qtopia", "Import (*.ics/*.vcs) file", 0,
+ this );
+ action->addTo( importMenu );
+ connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
+ action = new QAction( "import_quick", "Import last file", 0,
+ this );
+ action->addTo( importMenu );
+ connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
+ importMenu->insertSeparator();
+ action = new QAction( "import_qtopia", "Import Opie/Qtopia Cal.", 0,
+ this );
+ action->addTo( importMenu );
+ importMenu->insertSeparator();
+ connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
+
+ action = new QAction( "load_cal", "Load Calendar Backup", 0,
+ this );
+ action->addTo( importMenu );
+ connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
+
+ action = new QAction( "save_cal", "Save Calendar Backup", 0,
+ this );
+ action->addTo( importMenu );
+ connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
+
+ importMenu->insertSeparator();
+ action = new QAction( "import_qtopia", "Export VCalendar", 0,
+ this );
+ action->addTo( importMenu );
+ connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
+
+
+ QPopupMenu *syncMenu = new QPopupMenu( this );
+ action = new QAction( "syncssh", "Remote via ssh/scp(not implemented)", 0,
+ this );
+ action->addTo( syncMenu );
+ connect( action, SIGNAL( activated() ), SLOT( syncSSH() ) );
+ action = new QAction( "synclocal", "With local file(not implemented)", 0,
+ this );
+ action->addTo( syncMenu );
+ connect( action, SIGNAL( activated() ), SLOT( syncLocalFile() ) );
+ action = new QAction( "quicksynclocal", "With last file(not implemented)", 0,
+ this );
+ action->addTo( syncMenu );
+ connect( action, SIGNAL( activated() ), SLOT( quickSyncLocalFile() ) );
+
+ menuBar->insertItem( "Actions", actionMenu );
+ menuBar->insertItem( "Load/Save", importMenu );
+ menuBar->insertItem( "Synchronize", syncMenu );
+ //menuBar->insertItem( "Configure",configureMenu );
+ //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
+ menuBar->insertItem( "AgendaSize",configureAgendaMenu );
+ menuBar->insertItem( "Toolbar",configureToolBarMenu );
+ QPopupMenu *helpMenu = new QPopupMenu( menuBar );
+ icon = loadPixmap( "korganizer/korganizer" );
+ action = new QAction( "Key bindings", "Key Bindings...", 0, this );
+ action->addTo( helpMenu );
+ connect( action, SIGNAL( activated() ),
+ SLOT( keyBindings() ) );
+ action = new QAction( "Auto saving", "Auto saving...", 0, this );
+ action->addTo( helpMenu );
+ connect( action, SIGNAL( activated() ),
+ SLOT( aboutAutoSaving() ) );
+ action = new QAction( "Problemd", "Known Problems...", 0,this );
+ action->addTo( helpMenu );
+ connect( action, SIGNAL( activated() ),
+ SLOT( aboutKnownBugs() ) );
+ action = new QAction( "about", "About...", 0, this );
+ action->addTo( helpMenu );
+ connect( action, SIGNAL( activated() ),
+ SLOT( about() ) );
+ menuBar->insertItem( "Help", helpMenu );
+*/
+ //menuBar->insertSeparator();
+
+ // ******************************************************
+ // menubar icons
+
+
+ iconToolBar->setHorizontalStretchable (true );
+ //menuBar->insertItem( iconToolBar );
+ //xdays_action
+/*
+ if (p-> mShowIconNewEvent)
+ ne_action->addTo( iconToolBar );
+ if (p->mShowIconNewTodo )
+ nt_action->addTo( iconToolBar );
+ if (p-> mShowIconSearch)
+ search_action->addTo( iconToolBar );
+ if (p-> mShowIconNext)
+ whatsnext_action->addTo( iconToolBar );
+ if (p-> mShowIconNextDays)
+ xdays_action->addTo( iconToolBar );
+ if (p-> mShowIconList)
+ showlist_action->addTo( iconToolBar );
+ if (p-> mShowIconDay1)
+ day1_action->addTo( iconToolBar );
+ if (p-> mShowIconDay5)
+ day5_action->addTo( iconToolBar );
+ if (p-> mShowIconDay7)
+ day7_action->addTo( iconToolBar );
+ if (p-> mShowIconMonth)
+ month_action->addTo( iconToolBar );
+ if (p-> mShowIconTodoview)
+ todoview_action->addTo( iconToolBar );
+ if (p-> mShowIconJournal)
+ viewjournal_action->addTo( iconToolBar );
+ icon = loadPixmap( pathString + "2leftarrowB" );
+ configureToolBarMenu->insertItem(icon, "Prev. month", 200, 14);
+ if (p-> mShowIconBackFast) {
+ action = new QAction( "Prev month", icon, "Go Backward",0 , this );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( goPreviousMonth() ) );
+ action->addTo( iconToolBar );
+ }
+ icon = loadPixmap( pathString + "1leftarrowB" );
+ configureToolBarMenu->insertItem(icon, "Go previous", 210,15);
+ if (p-> mShowIconBack) {
+ action = new QAction( "Go previous", icon, "Go Backward",0 , this );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( goPrevious() ) );
+ action->addTo( iconToolBar );
+ }
+ if (p-> mShowIconToday)
+ today_action->addTo( iconToolBar );
+ icon = loadPixmap( pathString + "1rightarrowB" );
+ configureToolBarMenu->insertItem(icon, "Go next", 220);
+ if (p-> mShowIconForward) {
+ action = new QAction( "Go next", icon, "Go Backward",0 , this );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( goNext() ) );
+ action->addTo( iconToolBar );
+ }
+ icon = loadPixmap( pathString + "2rightarrowB" );
+ configureToolBarMenu->insertItem(icon, "Next month", 230);
+ if (p-> mShowIconForwardFast) {
+ action = new QAction( "Next month", icon, "Go Backward",0 , this );
+ connect( action, SIGNAL( activated() ),
+ mView, SLOT( goNextMonth() ) );
+ action->addTo( iconToolBar );
+ }
+*/
+
+ configureToolBarMenu->insertItem("WhatsThis", 300);
+/*
+ if (p-> mShowIconNewEvent)
+ configureToolBarMenu->setItemChecked( 10, true );
+ if (p->mShowIconNewTodo )
+ configureToolBarMenu->setItemChecked( 20, true );
+ if (p-> mShowIconSearch)
+ configureToolBarMenu->setItemChecked( 120, true );
+ if (p-> mShowIconList)
+ configureToolBarMenu->setItemChecked( 30, true );
+ if (p-> mShowIconDay1)
+ configureToolBarMenu->setItemChecked( 40, true );
+ if (p-> mShowIconDay5)
+ configureToolBarMenu->setItemChecked( 50, true );
+ if (p-> mShowIconDay7)
+ configureToolBarMenu->setItemChecked( 60, true );
+ if (p-> mShowIconMonth)
+ configureToolBarMenu->setItemChecked( 70, true );
+ if (p-> mShowIconTodoview)
+ configureToolBarMenu->setItemChecked( 80, true );
+ if (p-> mShowIconBackFast)
+ configureToolBarMenu->setItemChecked( 200, true );
+ if (p-> mShowIconBack)
+ configureToolBarMenu->setItemChecked( 210, true );
+ if (p-> mShowIconToday)
+ configureToolBarMenu->setItemChecked( 130, true );
+ if (p-> mShowIconForward)
+ configureToolBarMenu->setItemChecked( 220, true );
+ if (p-> mShowIconForwardFast)
+ configureToolBarMenu->setItemChecked( 230, true );
+ if (p-> mShowIconNextDays)
+ configureToolBarMenu->setItemChecked( 100, true );
+ if (p-> mShowIconNext)
+ configureToolBarMenu->setItemChecked( 110, true );
+ if (p-> mShowIconJournal)
+ configureToolBarMenu->setItemChecked( 90, true );
+ if (p-> mShowIconWhatsThis)
+ configureToolBarMenu->setItemChecked( 300, true );
+
+ QLabel* dummy = new QLabel( iconToolBar );
+ dummy->setBackgroundColor( iconToolBar->backgroundColor() );
+ if (!p-> mShowIconStretch)
+ iconToolBar->setStretchableWidget ( dummy ) ;
+ else
+ configureToolBarMenu->setItemChecked( 5, true );
+ if (p-> mShowIconWhatsThis)
+ QWhatsThis::whatsThisButton ( iconToolBar );
+ connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
+ configureAgenda( p->mHourSize );
+ connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
+*/
+}
+/*
+void MainWindow::setDefaultPreferences()
+{
+ KOPrefs *p = KOPrefs::instance();
+
+ p->mCompactDialogs = true;
+ p->mConfirm = true;
+ p->mEnableQuickTodo = false;
+}
+*/
+void MainWindow::about()
+{
+ QMessageBox::about( this, "About KOrganizer/Pi",
+ "KOrganizer/Platform-independent\n"
+ "(KO/Pi) 1.6.0e - "
+#ifdef DESKTOP_VERSION
+ "Desktop Edition\n"
+#else
+ "PDA-Edition\n"
+ "for: Zaurus 5500 / 7x0 / 8x0\n"
+#endif
+ "(c) 2004 Lutz Rogowski\n"
+ "Email:lutz@pi-sync.net\n"
+ "KO/Pi is based on KOrganizer\n"
+ "(c) 2002,2003 Cornelius Schumacher\n"
+ "Email: schumacher@kde.org\n"
+ "KOrganizer/Pi is licensed\n"
+ "under the GPL.\n"
+ "KO/Pi can be compiled for\n"
+ "Linux, Zaurus-PDA and Windows\n"
+ "www.korganizer.org\n" );
+}
+/*
+void MainWindow::keyBindings()
+{
+ QMessageBox* msg;
+ msg = new QMessageBox( "Key bindings KOrganizer/Pi",
+ "Space: Toggle Fullscreen | P: Date Picker\n"
+ "H: This dialog | I: Show info | S: Search\n"
+ "F: Toggle Filterview | 1-4: Select Filter\n"
+ "N: Show next days | W: Whats next\n "
+ "V: Todo view | L: Event list view\n"
+ "T: Goto today | T+<ctrl>: New Todo\n"
+ "E: Edit item | E+<ctrl>: New Event\n"
+ "5: Work week view | 7: Week view\n"
+ "D: One day view | M: Month view\n"
+ "+,- : Zoom in/out Agenda | A: Toggle Allday\n"
+ "<ctrl>+<up>/<down>: Scroll todo view\n"
+ "<right>,C: Next week | <right>+<ctrl>: Next month\n"
+ "<left>,X: Prev. week | <left>+<ctrl>: Prev. month\n"
+ "<del>,<backspace>: Delete sel. item\n",
+ QMessageBox::NoIcon,
+ QMessageBox::Ok,
+ QMessageBox::NoButton,
+ QMessageBox::NoButton );
+ msg->exec();
+ delete msg;
+
+}
+void MainWindow::aboutAutoSaving()
+{
+ QMessageBox* msg;
+ msg = new QMessageBox( "Auto Saving in KOrganizer/Pi",
+ "After changing something, the data is\n"
+ "automatically saved to the file\n"
+ "~/Applications/korganizer/mycalendar.ics\n "
+ "after (configureable) one minute.\n"
+ "For safety reasons there is one autosaving\n"
+ "after 10 minutes (of idle time) again. The \n"
+ "data is saved automatically when closing KO/Pi\n"
+ "You can create a backup file \n"
+ "with: Load/Save - Save Calendar Backup\n",
+ QMessageBox::NoIcon,
+ QMessageBox::Ok,
+ QMessageBox::NoButton,
+ QMessageBox::NoButton);
+ msg->exec();
+ delete msg;
+
+
+}
+void MainWindow::aboutKnownBugs()
+{
+ QMessageBox* msg;
+ msg = new QMessageBox( "Known Problems in KOrganizer/Pi",
+ "1) The QWhatsThis help is not working.\n"
+ "There is only a black rectangle displayed\n"
+ "when clicking on an event.\n "
+ "2) Audio alarm is available!\n"
+ "as an additional small application\n"
+ "3) Syncing is missing.\n"
+ "Syncing via ssh/scp will be available in\n"
+ "KOrganizer/Pi 2.0\n"
+ "\n"
+ "Please report unexpected behaviour to\n"
+ "lutz@pi-sync.net\n",
+ QMessageBox::NoIcon,
+ QMessageBox::Ok,
+ QMessageBox::NoButton,
+ QMessageBox::NoButton);
+ msg->exec();
+ delete msg;
+
+}
+
+QString MainWindow::defaultFileName()
+{
+#ifndef DESKTOP_VERSION
+ return Global::applicationFileName( "korganizer", "mycalendar.ics" );
+#else
+ // pending
+ QString file;
+ file = QDir::homeDirPath()+"/korganizer/mycalendar.ics";
+ return QDir::convertSeparators( file );
+#endif
+}
+
+void MainWindow::processIncidenceSelection( Incidence *incidence )
+{
+ if ( !incidence ) {
+ enableIncidenceActions( false );
+
+ mNewSubTodoAction->setEnabled( false );
+ setCaptionToDates();
+ return;
+
+ }
+
+ QString startString = "";
+ if ( incidence->type() != "Todo" ) {
+ if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
+ startString = ": "+incidence->dtStart().time().toString().left(5);
+ startString += " "+ incidence->dtStart().date().toString();
+ startString += "-"+incidence->dtEnd().time().toString().left(5);
+ startString += " "+ incidence->dtEnd().date().toString();
+
+ } else {
+ if ( incidence->dtStart().time() != incidence->dtEnd().time() )
+ startString = ": "+incidence->dtStart().time().toString().left(5)+"-"+incidence->dtEnd().time().toString().left(5);
+ startString +=" "+incidence->dtStart().date().toString();
+ }
+
+ }
+ else
+ startString = ": (Prio "+QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +"\% completed";
+
+ setCaption( incidence->summary()+startString);
+
+ enableIncidenceActions( true );
+
+ if ( incidence->type() == "Event" ) {
+ mShowAction->setText( i18n("Show Event...") );
+ mEditAction->setText( i18n("Edit Event...") );
+ mDeleteAction->setText( i18n("Delete Event...") );
+
+ mNewSubTodoAction->setEnabled( false );
+ } else if ( incidence->type() == "Todo" ) {
+ mShowAction->setText( i18n("Show Todo...") );
+ mEditAction->setText( i18n("Edit Todo...") );
+ mDeleteAction->setText( i18n("Delete Todo...") );
+
+ mNewSubTodoAction->setEnabled( true );
+ } else {
+ mShowAction->setText( i18n("Show...") );
+ mShowAction->setText( i18n("Edit...") );
+ mShowAction->setText( i18n("Delete...") );
+
+ mNewSubTodoAction->setEnabled( false );
+ }
+}
+
+void MainWindow::enableIncidenceActions( bool enabled )
+{
+ mShowAction->setEnabled( enabled );
+ mEditAction->setEnabled( enabled );
+ mDeleteAction->setEnabled( enabled );
+}
+
+void MainWindow::importQtopia()
+{
+#ifndef DESKTOP_VERSION
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",
+ "When importing a calendar twice\n"
+ "duplicated events will be ignored!\n"
+ "You can create a backup file with\n"
+ "Load/Save - Save Calendar Backup\n"
+ "to revert importing",
+ "Import!", "Cancel", 0,
+ 0, 1 );
+ if ( result == 0 ) {
+ QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
+ QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
+ QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
+ mView->importQtopia( categories, datebook, todolist );
+ }
+#else
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",
+ "NOT SUPPORTED \n"
+ "ON DESKTOP!\n",
+ "OK", "Cancel", 0,
+ 0, 1 );
+
+#endif
+}
+void MainWindow::checkAlarms()
+{
+ if ( mBlockAtStartup )
+ return;
+ alarmTimer.start( 1000 * 3);
+
+}
+void MainWindow::slotModifiedChanged( bool changed )
+{
+ if ( mBlockAtStartup )
+ return;
+ int msec;
+ // we store the changes after 1 minute,
+ // and for safety reasons after 10 minutes again
+ if ( !mBlockSaveFlag )
+ msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
+ else
+ msec = 1000 * 600;
+ mSaveTimer.start( msec, true ); // 1 minute
+ qDebug("KO: Saving File in %d secs!", msec/1000);
+ mCalendarModifiedFlag = true;
+}
+void MainWindow::writeAlarm()
+{
+ if ( mBlockAtStartup )
+ return;
+ //QCopEnvelope e3("koalarm", "-showWN");
+ QDateTime nextA ;
+ QDateTime reference ( QDate( 2000, 1, 1 ) );
+ QString summary;
+ alarmTimer.stop();
+ Calendar* cal = mView->calendar();
+ if ( ! cal ){
+ qDebug("KO: Calendar undefined. No alarm notification");
+ return;
+ }
+ nextA = cal->nextAlarm( 720 );
+ summary = cal->nextSummary();
+ qDebug("KO: Next Alarm %s %s", nextA.toString().latin1(), summary.latin1());
+ if ( nextA < QDateTime::currentDateTime().addDays( 720-1 ) ) {
+ KConfig *config = KOGlobals::config();
+ config->setGroup("NextSystemAlarm");
+ QString date, sum;
+ date = config->readEntry("TimeDateinSecs", "xxx");
+ bool ok = false;
+ int shsecs = date.toInt(&ok );
+ QDateTime scheduledAlarm;
+ QDateTime eventDateTime = cal->nextAlarmEvent();
+ sum = config->readEntry("Summary", "sss");
+ if ( ok ) {
+ scheduledAlarm = reference.addSecs( shsecs );
+ //qDebug("sheduledAlarm %s ", scheduledAlarm.toString().latin1());
+ if ( scheduledAlarm == nextA && sum == summary ) {
+ qDebug("KO: Same alarm time+summary - nothing to do! ");
+ return;
+ }
+ }
+ if ( ok ) {
+ // delete alarm from system
+ //qDebug("delete Alarm %s ", scheduledAlarm.toString().latin1());
+#ifndef DESKTOP_VERSION
+ AlarmServer::deleteAlarm ( scheduledAlarm,"koalarm" , sum.latin1() );
+#endif
+ }
+ // add new alarm to system
+ qDebug("KO: Add Alarm: %s ", nextA.toString().latin1() );
+#ifndef DESKTOP_VERSION
+ AlarmServer::addAlarm ( nextA,"koalarm", summary.latin1() );
+#endif
+ // write new alarm to config file
+ //qDebug("Entry %s %s ", date.latin1(), sum.latin1());
+ int secs = reference.secsTo( nextA );
+ //qDebug(" secs %d ", secs);
+ setCaption( i18n("Next Alarm: ")+ nextA.toString() +"-"+summary );
+ config->writeEntry("TimeDateinSecs",QString::number ( secs ));
+ config->writeEntry("Summary",summary);
+ config->writeEntry("TimeDate",nextA.toString());
+ config->writeEntry("WriteDateTime",QDateTime::currentDateTime().toString());
+ config->writeEntry("EventStartDateTime",eventDateTime.toString());
+ config->writeEntry("SystemNotifyInSecs",QString::number (QDateTime::currentDateTime().secsTo( nextA ) ));
+ config->sync();
+
+ }
+}
+void MainWindow::save()
+{
+ if ( mBlockSaveFlag )
+ return;
+
+ mBlockSaveFlag = true;
+ QTime neededSaveTime = QDateTime::currentDateTime().time();
+ setCaption("KO/Pi:Saving Data to File ..." );
+ qDebug("KO: Start saving data to file!");
+ mView->saveCalendar( defaultFileName() );
+ int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
+ qDebug("KO: Needed %d ms for saving.",msNeeded );
+ QString savemes;
+ savemes.sprintf("KO/Pi:File Saved. Needed %d sec, %d ms",(msNeeded/1000)%100,msNeeded%1000 );
+ setCaption(savemes);
+ mCalendarModifiedFlag = false;
+ mBlockSaveFlag = false;
+}
+
+void MainWindow::keyReleaseEvent ( QKeyEvent * e)
+{
+ if ( !e->isAutoRepeat() ) {
+ mFlagKeyPressed = false;
+ }
+}
+void MainWindow::keyPressEvent ( QKeyEvent * e )
+{
+ qApp->processEvents();
+ if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
+ e->ignore();
+ // qDebug(" ignore %d",e->isAutoRepeat() );
+ return;
+ }
+ if (! e->isAutoRepeat() )
+ mFlagKeyPressed = true;
+ KOPrefs *p = KOPrefs::instance();
+ bool showSelectedDates = false;
+ int size;
+ //qDebug("MainWindow::keyPressEvent ");
+ switch ( e->key() ) {
+ case Qt::Key_Right:
+ if ( e->state() == Qt::ControlButton )
+ mView->goNextMonth();
+ else
+ mView->goNext();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_Left:
+ if ( e->state() == Qt::ControlButton )
+ mView->goPreviousMonth();
+ else
+ mView->goPrevious();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_Down:
+ mView->viewManager()->agendaView()->scrollOneHourDown();
+ break;
+ case Qt::Key_Up:
+ mView->viewManager()->agendaView()->scrollOneHourUp();
+ break;
+ case Qt::Key_I:
+ mView->showIncidence();
+ break;
+ case Qt::Key_Delete:
+ case Qt::Key_Backspace:
+ mView->deleteIncidence();
+ break;
+ case Qt::Key_D:
+ mView->viewManager()->showDayView();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_0:
+ mView->toggleFilerEnabled( );
+ break;
+ case Qt::Key_1:
+ mView->selectFilter( 0 );
+ break;
+ case Qt::Key_2:
+ mView->selectFilter( 1 );
+ break;
+ case Qt::Key_3:
+ mView->selectFilter( 2 );
+ break;
+ case Qt::Key_4:
+ mView->selectFilter( 3 );
+ break;
+ case Qt::Key_5:
+ mView->viewManager()->showWorkWeekView();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_7:
+ mView->viewManager()->showWeekView();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_M:
+ mView->viewManager()->showMonthView();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_Insert:
+ mView->newEvent();
+ break;
+ case Qt::Key_S :
+ mView->dialogManager()->showSearchDialog();
+ break;
+ case Qt::Key_H :
+ keyBindings();
+ break;
+ case Qt::Key_W:
+ mView->viewManager()->showWhatsNextView();
+ break;
+ case Qt::Key_L:
+ mView->viewManager()->showListView();
+ break;
+ case Qt::Key_N:
+ mView->viewManager()->showNextXView();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_V:
+ mView->viewManager()->showTodoView();
+ break;
+ case Qt::Key_C:
+ mView->goNext();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_P:
+ mView->showDatePicker( );
+ break;
+ case Qt::Key_F:
+ mView->toggleFilter();
+ break;
+ case Qt::Key_X:
+ mView->goPrevious();
+ showSelectedDates = true;
+ break;
+ case Qt::Key_Space:
+ mView->toggleExpand();
+ break;
+ case Qt::Key_A:
+ mView->toggleAllDaySize();
+ break;
+ case Qt::Key_T:
+ if ( e->state() == Qt::ControlButton )
+ mView->newTodo();
+ else {
+ mView->goToday();
+ showSelectedDates = true;
+ }
+ break;
+ case Qt::Key_J:
+ mView->viewManager()->showJournalView();
+ break;
+ case Qt::Key_Return:
+ case Qt::Key_E:
+ if ( e->state() == Qt::ControlButton )
+ mView->newEvent();
+ else
+ mView->editIncidence();
+ break;
+ case Qt::Key_Plus:
+ size = p->mHourSize +2;
+ if ( size <= 18 )
+ configureAgenda( size );
+ break;
+ case Qt::Key_Minus:
+ size = p->mHourSize - 2;
+ if ( size >= 4 )
+ configureAgenda( size );
+ break;
+
+
+ default:
+ e->ignore();
+ }
+
+ if ( showSelectedDates ) {
+ ;// setCaptionToDates();
+ }
+
+}
+
+void MainWindow::configureToolBar( int item )
+{
+
+ configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
+ KOPrefs *p = KOPrefs::instance();
+ p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
+ p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
+ p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
+ p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
+ p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
+ p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
+ p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
+ p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
+ p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
+ p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
+ p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
+ p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
+ p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
+ p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
+ p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
+ p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
+ p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
+ p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
+ p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
+ initActions();
+}
+
+void MainWindow::setCaptionToDates()
+{
+ QString selDates;
+ selDates = mView->startDate().toString();
+ if (mView->startDate() < mView->endDate() )
+ selDates += " - " + mView->endDate().toString();
+ setCaption( "Dates: " + selDates );
+
+}
+// parameter item == 0: reinit
+void MainWindow::configureAgenda( int item )
+{
+
+ KOPrefs *p = KOPrefs::instance();
+
+ int i;
+ if ( item == 1 ) {
+ mView->toggleAllDaySize();
+ return;
+ }
+ // do not allow 4 for widgets higher than 480
+ if ( QApplication::desktop()->height() > 480 ) {
+ if ( item == 4 )
+ item = 6;
+ }
+ for ( i = 4; i <= 18; i= i+2 )
+ configureAgendaMenu->setItemChecked( i, false );
+ configureAgendaMenu->setItemChecked( item, true );
+ if ( p->mHourSize == item )
+ return;
+ p->mHourSize=item;
+ mView->viewManager()->agendaView()->updateConfig();
+}
+
+void MainWindow::saveCalendar()
+{
+ QString fn = KOPrefs::instance()->mLastSaveFile;
+ fn = KFileDialog::getSaveFileName( fn, "Save backup filename", this );
+
+ if ( fn == "" )
+ return;
+ QFileInfo info;
+ info.setFile( fn );
+ QString mes;
+ bool createbup = true;
+ if ( info. exists() ) {
+ mes.sprintf( "Backup file\nalready exists!\nOld backup file from:\n%s\nOverwrite?\n",info.lastModified ().toString().latin1() );
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",mes,
+ "Overwrite!", "Cancel", 0,
+ 0, 1 );
+ if ( result != 0 ) {
+ createbup = false;
+ }
+ }
+ if ( createbup ) {
+ mView->saveCalendar( fn );
+ mes.sprintf("KO/Pi:Saved %s",fn.latin1() );
+ KOPrefs::instance()->mLastSaveFile = fn;
+ setCaption(mes);
+ }
+}
+void MainWindow::loadCalendar()
+{
+
+ QString fn = KOPrefs::instance()->mLastLoadFile;
+ fn = KFileDialog::getOpenFileName( fn, "Load backup filename", this );
+
+ if ( fn == "" )
+ return;
+ QFileInfo info;
+ info.setFile( fn );
+ QString mess;
+ bool loadbup = true;
+ if ( info. exists() ) {
+ mess.sprintf( "Backup file from:\n%s\nLoading backup\nfile will delete\nyour current Data!\n",info.lastModified ().toString().latin1() );
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",
+ mess,
+ "Load!", "Cancel", 0,
+ 0, 1 );
+ if ( result != 0 ) {
+ loadbup = false;
+ }
+ } else {
+ QMessageBox::warning( this, "KO/Pi: Warning!",
+ "Backup file\ndoes not exist!\n"
+ "Nothing loaded!", 0, 0,
+ 0, 1 );
+
+ return;
+ }
+ if ( loadbup ) {
+ mView->openCalendar( fn );
+ KOPrefs::instance()->mLastLoadFile = fn;
+ mess.sprintf("KO/Pi:Loaded %s",fn.latin1() );
+ setCaption(mess);
+ }
+
+}
+void MainWindow::quickImportIcal()
+{
+ importFile( KOPrefs::instance()->mLastImportFile, false );
+}
+void MainWindow::importFile( QString fn, bool quick )
+{
+ QFileInfo info;
+ info.setFile( fn );
+ QString mess;
+ bool loadbup = true;
+ if ( !info. exists() ) {
+ mess= "Import file \n..."+fn.right( 30)+ "\ndoes not exist!\nNothing imported!\n";
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",
+ mess );
+ return;
+ }
+ int result = 0;
+ if ( !quick ) {
+ mess.sprintf( "Import file \n..."+fn.right( 25)+"\nfrom:\n%s\nDuplicated entries\nwill not be imported!\n",info.lastModified ().toString().latin1() );
+ result = QMessageBox::warning( this, "KO/Pi: Warning!",
+ mess,
+ "Import", "Cancel", 0,
+ 0, 1 );
+ }
+ if ( result == 0 ) {
+ if ( mView->openCalendar( fn, true )) {
+ KOPrefs::instance()->mLastImportFile = fn;
+ setCaption(i18n(" "));
+ setCaption(i18n("Imported file successfully"));
+ } else {
+ setCaption(i18n("Error importing file"));
+ }
+ }
+}
+void MainWindow::importIcal()
+{
+
+ QString fn =KOPrefs::instance()->mLastImportFile;
+
+ fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this );
+ if ( fn == "" )
+ return;
+ importFile( fn, true );
+
+}
+
+void MainWindow::exportVCalendar()
+{
+ QString fn = KOPrefs::instance()->mLastVcalFile;
+ fn = KFileDialog::getSaveFileName( fn, "Export vcal filename(*.vcs)", this );
+ if ( fn == "" )
+ return;
+ QFileInfo info;
+ info.setFile( fn );
+ QString mes;
+ bool createbup = true;
+ if ( info. exists() ) {
+ mes.sprintf( i18n("Save file\nalready exists!\nOld save file from:\n%s\nOverwrite?\n"),info.lastModified ().toString().latin1() );
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",mes,
+ "Overwrite!", "Cancel", 0,
+ 0, 1 );
+ if ( result != 0 ) {
+ createbup = false;
+ }
+ }
+ if ( createbup ) {
+ if ( mView->exportVCalendar( fn ) ) {
+ KOPrefs::instance()->mLastVcalFile = fn;
+ if ( fn.length() > 20 )
+ mes.sprintf(i18n("KO/Pi:Exported to ...%s"),(fn.right(20)).latin1() );
+ else
+ mes.sprintf(i18n("KO/Pi:Exported to %s"),fn.latin1() );
+ setCaption(mes);
+ }
+ }
+
+}
+
+QString MainWindow::getPassword( )
+{
+ QString retfile = "";
+ QDialog dia ( this, "input-dialog", true );
+ QLineEdit lab ( &dia );
+ lab.setEchoMode( QLineEdit::Password );
+ QVBoxLayout lay( &dia );
+ lay.setMargin(7);
+ lay.setSpacing(7);
+ lay.addWidget( &lab);
+ dia.setFixedSize( 230,50 );
+ dia.setCaption( i18n("Input password") );
+ dia.show();
+ int res = dia.exec();
+ if ( res )
+ retfile = lab.text();
+ return retfile;
+
+}
+#ifndef _WIN32_
+#include <unistd.h>
+#endif
+void MainWindow::syncLocalFile()
+{
+
+ QString fn =KOPrefs::instance()->mLastSyncedLocalFile;
+
+ fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
+ if ( fn == "" )
+ return;
+ syncWithFile( fn, false );
+
+}
+
+void MainWindow::syncWithFile( QString fn , bool quick )
+{
+ QFileInfo info;
+ info.setFile( fn );
+ QString mess;
+ bool loadbup = true;
+ if ( !info. exists() ) {
+ mess.sprintf( i18n( "Sync file \n...%s\ndoes not exist!\nNothing synced!\n"),fn.right( 30).latin1() );
+ int result = QMessageBox::warning( this, "KO/Pi: Warning!",
+ mess );
+ return;
+ }
+ int result = 0;
+ if ( !quick ) {
+ mess.sprintf( "Sync with file \n..."+fn.right( 25)+"\nfrom:\n%s\n",info.lastModified ().toString().latin1() );
+ result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
+ mess,
+ i18n("Sync"), i18n("Cancel"), 0,
+ 0, 1 );
+ }
+ if ( KOPrefs::instance()->mAskForPreferences )
+ mView->edit_sync_options();
+ if ( result == 0 ) {
+ qDebug("Now sycing ... ");
+ mView->syncCalendar( fn, true );
+ if ( ! quick )
+ KOPrefs::instance()->mLastSyncedLocalFile = fn;
+ }
+
+}
+
+void MainWindow::quickSyncLocalFile()
+{
+ qDebug("quickSyncLocalFile() ");
+ syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false );
+}
+
+void MainWindow::syncSSH()
+{
+ QTime timer;
+ timer.start();
+ qDebug("MainWindow::syncssh() ");
+ KOPrefs *p = KOPrefs::instance();
+ QString localFile = p->mLocalTempFile;
+ QString remoteIP = p->mRemoteIP;
+ QString remoteUser = p->mRemoteUser;
+ QString remoteFile = p->mRemoteFile;
+ if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 )
+ remoteUser += ":" + p->mRemotePassWd;
+
+ QString question = i18n("Do you really want\nto remote sync?\n \n") +
+ i18n("IP: " ) +remoteIP +"\n" +
+ i18n("User: " ) + remoteUser +"\n" ;
+ int maxlen = 30;
+ if ( QApplication::desktop()->width() > 320 )
+ maxlen += 25;
+ if ( remoteFile.length() > maxlen )
+ question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n";
+ else
+ question += i18n("Remote file:\n " ) + remoteFile +"\n";
+ if ( localFile.length() > maxlen )
+ question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n";
+ else
+ question += i18n("Local temp file:\n " ) + localFile +"\n";
+
+ if ( QMessageBox::information( this, "KO/Pi Sync",
+ question,
+ i18n("Yes"), i18n("No"),
+ 0, 0 ) != 0 )
+ return;
+ if ( !p->mUsePassWd ) {
+ QString pass = getPassword();
+ if ( pass.length() > 0 )
+ remoteUser += ":" + pass;
+ }
+ QString command = "scp " + remoteUser + "@" + remoteIP +":" + remoteFile +" " +localFile;
+ setCaption ( i18n( "Copy remote file to local machine..." ) );
+ int fileSize = 0;
+ int result = system ( command );
+ // 0 : okay
+ // 256: no such file or dir
+ //
+ qDebug("KO: Remote copy result(0 = okay): %d ",result );
+ if ( result != 0 ) {
+ int len = maxlen;
+ while ( len < command.length() ) {
+ command.insert( len , "\n" );
+ len += maxlen +2;
+ }
+ question = i18n("Sorry, the copy command failed!\nCommand was:\n") + command + "\n \nTry command on console to get more\ndetailed info about the reason.\n";
+ QMessageBox::information( this, "KO/Pi Sync - ERROR",
+ question,
+ i18n("Okay!")) ;
+ return;
+ }
+
+
+ setCaption ( i18n( "Copying succeed. Syncing not yet implemented" ) );
+ syncWithFile(localFile , true );
+ return;
+#if 0
+ system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics");
+ while ( timer.elapsed() < 5000 )
+ qApp->processEvents();
+
+ qDebug("MainWindow::merging) ");
+ mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 );
+ while ( mBlockSaveFlag )
+ qApp->processEvents();
+ save();
+ system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics");
+#endif
+
+}
+*/
+