summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog1
-rw-r--r--core/pim/notes/editwindow.cpp57
-rw-r--r--core/pim/notes/editwindow.h22
-rw-r--r--core/pim/notes/main.cpp12
-rw-r--r--core/pim/notes/mainwindow.cpp255
-rw-r--r--core/pim/notes/mainwindow.h52
-rw-r--r--core/pim/notes/opie-notes.pro11
7 files changed, 410 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 24ae63c..36d7df9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
New Features
------------
* Appearance: Added configuration options to set smallIconSize, bigIconSize, useBigPixmaps (hrw)
+ * Opie-Notes: Notes application based on NoteZ (hrw)
Fixed Bugs
----------
diff --git a/core/pim/notes/editwindow.cpp b/core/pim/notes/editwindow.cpp
new file mode 100644
index 0000000..1b2d4a6
--- a/dev/null
+++ b/core/pim/notes/editwindow.cpp
@@ -0,0 +1,57 @@
+#include "editwindow.h"
+
+editWindowWidget::editWindowWidget( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl )
+{
+ setCaption( tr( "Information:" ) );
+ QGridLayout *gridLayout = new QGridLayout(this, 1, 1, 5, 5);
+ editArea = new QMultiLineEdit(this, "editArea");
+ gridLayout->addWidget(editArea, 0, 0);
+ editArea->setWordWrap(QMultiLineEdit::WidgetWidth);
+
+ showMaximized();
+}
+
+void editWindowWidget::loadFile(QString fileName)
+{
+ QFileInfo fileinfo(fileName);
+ setCaption(fileinfo.fileName());
+
+ QFile file(fileName);
+
+ if (file.exists())
+ {
+ if (!file.open(IO_ReadOnly))
+ {
+ QMessageBox::warning(0, tr("File i/o error"), fileName.sprintf(tr("Could not read file '%s'"), fileName));
+ }
+ else
+ {
+ QTextStream inStream(&file);
+ inStream.setEncoding(QTextStream::UnicodeUTF8);
+ editArea->setText(inStream.read());
+ file.close();
+ }
+ }
+}
+
+void editWindowWidget::saveFile(QString fileName)
+{
+ QFile file(fileName);
+
+ if(!file.open(IO_WriteOnly))
+ {
+ QMessageBox::warning(0, tr("File i/o error"), fileName.sprintf(tr("Could not write file '%s'"), fileName));
+ }
+ else
+ {
+ QTextStream outStream(&file);
+ outStream.setEncoding(QTextStream::UnicodeUTF8);
+ outStream << editArea->text();
+ file.close();
+ this->accept();
+ }
+}
+
+editWindowWidget::~editWindowWidget()
+{
+}
diff --git a/core/pim/notes/editwindow.h b/core/pim/notes/editwindow.h
new file mode 100644
index 0000000..57c5241
--- a/dev/null
+++ b/core/pim/notes/editwindow.h
@@ -0,0 +1,22 @@
+#include <qdialog.h>
+#include <qlayout.h>
+#include <qmultilineedit.h>
+#include <qmessagebox.h>
+#include <qtextstream.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+
+class editWindowWidget : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ editWindowWidget::editWindowWidget(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0);
+ ~editWindowWidget();
+ void loadFile(QString fileName);
+ void saveFile(QString fileName);
+
+ private:
+ QMultiLineEdit *editArea;
+
+};
diff --git a/core/pim/notes/main.cpp b/core/pim/notes/main.cpp
new file mode 100644
index 0000000..c69fa93
--- a/dev/null
+++ b/core/pim/notes/main.cpp
@@ -0,0 +1,12 @@
+#include "mainwindow.h"
+
+int main(int argc, char* argv[])
+{
+ QPEApplication a(argc, argv);
+
+ mainWindowWidget mainWindow;
+
+ a.showMainWidget(&mainWindow);
+
+ return a.exec();
+}
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"));
+}
+
diff --git a/core/pim/notes/mainwindow.h b/core/pim/notes/mainwindow.h
new file mode 100644
index 0000000..32431ef
--- a/dev/null
+++ b/core/pim/notes/mainwindow.h
@@ -0,0 +1,52 @@
+#include <qpe/qpeapplication.h>
+#include <qlistbox.h>
+#include <qdir.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qmessagebox.h>
+
+#include <opie2/opimmainwindow.h>
+#include <opie2/owidgetstack.h>
+
+class mainWindowWidget : public Opie::OPimMainWindow
+{
+ Q_OBJECT
+
+ public:
+ QListBox *notesList;
+ QDir fileList;
+
+ mainWindowWidget( QWidget *parent=0, const char *name=0, WFlags fl=0 );
+ void refreshList();
+
+ public slots:
+ void openFile();
+ void deleteFile();
+
+ private:
+ int selected;
+ QString fileName;
+ QString documentsDirName;
+
+ void editFile(QString filename, int create);
+ void toBeDone(void);
+
+ private slots:
+ void slotItemNew();
+ void slotItemEdit();
+ void slotItemDuplicate();
+ void slotItemDelete();
+ void slotItemBeam();
+ void slotItemFind();
+ void slotConfigure();
+
+ protected 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 Opie::OPimRecord& );
+};
diff --git a/core/pim/notes/opie-notes.pro b/core/pim/notes/opie-notes.pro
new file mode 100644
index 0000000..6a343d8
--- a/dev/null
+++ b/core/pim/notes/opie-notes.pro
@@ -0,0 +1,11 @@
+TEMPLATE = app
+CONFIG = qt warn_on
+
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
+LIBS += -lqpe -lopiecore2 -lopieui2 -lopiepim2
+
+HEADERS = mainwindow.h editwindow.h
+SOURCES = mainwindow.cpp main.cpp editwindow.cpp
+
+include( $(OPIEDIR)/include.pro )