summaryrefslogtreecommitdiff
path: root/core/pim/notes/mainwindow.cpp
Side-by-side diff
Diffstat (limited to 'core/pim/notes/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/notes/mainwindow.cpp255
1 files changed, 255 insertions, 0 deletions
diff --git a/core/pim/notes/mainwindow.cpp b/core/pim/notes/mainwindow.cpp
new file mode 100644
index 0000000..d10578a
--- a/dev/null
+++ b/core/pim/notes/mainwindow.cpp
@@ -0,0 +1,255 @@
+/*
+ * OPIE Notes
+ *
+ * based on NoteZ 1.1.0 by Henning Holtschneider <hh@holtschneider.com>
+ *
+ * moved to OPIE Pim framework by Marcin Juszkiewicz <openembedded@hrw.one.pl>
+ *
+ * History:
+ * - 2005.10.12 - started work
+ * - 2005.10.19 - version 0.2:
+ * - first working version
+ * - info sent to NoteZ author and to OPIE devel
+ *
+ * - 2005.10.20 - version 0.3:
+ * - load/save in UTF-8
+ * - load all files from Documents/text/plain
+ * - create .txt files not .ntz - timestamp used as name
+ * - one variable (documentsDirName) keep location of notes
+ * - code (re)indented and converted to spaces
+ * - variables translated to English (were in German)
+ * - started work on beaming
+ *
+ * ToDo:
+ * - beaming
+ * - moving to SQLite database
+ * - category support
+ * - searching
+ *
+ */
+
+#include "mainwindow.h"
+#include "editwindow.h"
+#include <qpe/ir.h>
+
+mainWindowWidget::mainWindowWidget( QWidget *parent, const char *name, WFlags)
+ : Opie::OPimMainWindow( "Notes", "Notes", tr( "Note" ), "notes",
+ parent, name, WType_TopLevel | WStyle_ContextHelp )
+{
+ setCaption( tr("Notes"));
+ notesList = new QListBox(this, "notesList");
+ setCentralWidget(notesList);
+
+ documentsDirName = QPEApplication::documentDir() + "/text/plain/";
+ this->selected = -1;
+ refreshList();
+
+ QObject::connect(notesList, SIGNAL(returnPressed(QListBoxItem*)), this, SLOT(slotItemEdit()));
+ QObject::connect(notesList, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(slotItemEdit()));
+}
+
+void mainWindowWidget::deleteFile()
+{
+ if( notesList->count() > 0 )
+ {
+ switch (QMessageBox::warning(0, tr("Delete note"), tr("Really delete\n'") + notesList->currentText() + "'?",
+ QMessageBox::Yes, QMessageBox::No))
+ {
+ case QMessageBox::Yes:
+ this->selected = notesList->currentItem();
+ QFile::remove(documentsDirName + fileList[notesList->currentItem()]);
+ refreshList();
+ break;
+
+ case QMessageBox::No:
+ // don't delete
+ break;
+ }
+ }
+}
+
+void mainWindowWidget::editFile(QString filename, int create)
+{
+ editWindowWidget *editWindow = new editWindowWidget(0, "editWindow", true);
+
+ editWindow->loadFile(filename);
+
+ if(QPEApplication::execDialog(editWindow) == QDialog::Accepted)
+ {
+ editWindow->saveFile(filename);
+ if( create )
+ {
+ // the new selection will be always at the end and count is already
+ // 1 bigger than selected
+ this->selected = notesList->count();
+ }
+ }
+
+ refreshList();
+}
+
+int mainWindowWidget::create()
+{
+ QString name;
+ int now = time(0);
+
+ this->editFile(name.sprintf(documentsDirName + "%d.txt", now), true );
+
+ return 0; //FIXME
+}
+
+void mainWindowWidget::slotItemEdit()
+{
+ openFile();
+}
+
+void mainWindowWidget::slotItemDelete()
+{
+ deleteFile();
+}
+
+void mainWindowWidget::slotItemNew()
+{
+ create();
+}
+
+void mainWindowWidget::slotItemDuplicate()
+{
+ QString fileName = documentsDirName + fileList[notesList->currentItem()];
+ int now = time(0);
+
+ QFile fileOld(fileName);
+
+ if (fileOld.exists())
+ {
+ if (!fileOld.open(IO_ReadOnly))
+ {
+ QMessageBox::warning(0, tr("File i/o error"), fileName.sprintf(tr("Could not read file '%s'"), fileName));
+ }
+ else
+ {
+ QFile fileNew(documentsDirName + fileName.sprintf("%d.txt", now));
+
+ if (!fileNew.exists())
+ {
+ if(fileNew.open(IO_WriteOnly))
+ {
+ QTextStream inStream(&fileOld);
+ inStream.setEncoding(QTextStream::UnicodeUTF8);
+
+ QTextStream outStream(&fileNew);
+ outStream.setEncoding(QTextStream::UnicodeUTF8);
+ outStream << inStream.read();
+
+ fileOld.close();
+ fileNew.close();
+ refreshList();
+ }
+ }
+ }
+ }
+}
+
+void mainWindowWidget::openFile()
+{
+ int number = notesList->currentItem();
+
+ if( notesList->count() > 0 )
+ {
+ this->selected = number;
+ this->editFile(documentsDirName + fileList[number], false);
+ }
+}
+
+void mainWindowWidget::refreshList()
+{
+ unsigned int item;
+ QString title;
+
+ notesList->clear();
+
+ fileList.setPath(documentsDirName);
+ fileList.setFilter(QDir::Files);
+ fileList.setSorting(QDir::Name);
+
+ for (item = 0; item < fileList.count(); item++)
+ {
+ QFile file(documentsDirName + fileList[item]);
+
+ if (!file.open(IO_ReadOnly))
+ {
+ QMessageBox::warning(0, tr("File i/o error"), title.sprintf(tr("Could not read file '%s'"), fileList[item]));
+ }
+ else
+ {
+ QTextStream inStream(&file);
+ inStream.setEncoding(QTextStream::UnicodeUTF8);
+
+ if (!inStream.atEnd())
+ {
+ title = inStream.readLine();
+ }
+ else
+ {
+ title = tr("<empty file>");
+ }
+
+ if (title.length() < 1)
+ {
+ title = tr("<no caption>");
+ }
+
+ file.close();
+
+ notesList->insertItem(title);
+ }
+ }
+
+ if( notesList->count() > 0 )
+ {
+ if( this->selected == -1 )
+ {
+ notesList->setCurrentItem( 0 );
+ }
+ else
+ {
+ if( notesList->count() > this->selected )
+ {
+ notesList->setCurrentItem( this->selected );
+ }
+ else
+ {
+ notesList->setCurrentItem( notesList->count() - 1 );
+ }
+
+ }
+ }
+ else
+ {
+ this->selected = -1;
+ }
+
+}
+
+void mainWindowWidget::slotItemBeam()
+{
+ Ir obex;
+
+ obex.send(documentsDirName + fileList[notesList->currentItem()], "test", "text/plain");
+}
+
+void mainWindowWidget::slotItemFind() { toBeDone();}
+void mainWindowWidget::slotConfigure() { toBeDone();}
+void mainWindowWidget::flush() { toBeDone();}
+void mainWindowWidget::reload() { toBeDone();}
+bool mainWindowWidget::remove( int /*uid*/ ) { toBeDone(); return false; }
+void mainWindowWidget::beam( int /*uid*/ ) { toBeDone();}
+void mainWindowWidget::show( int /*uid*/ ) { toBeDone();}
+void mainWindowWidget::edit( int /*uid*/ ) { toBeDone();}
+void mainWindowWidget::add( const Opie::OPimRecord& ) { toBeDone();}
+
+void mainWindowWidget::toBeDone(void)
+{
+ QMessageBox::information( this, "Notes", tr("Not yet implemented"));
+}
+