-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | core/pim/notes/editwindow.cpp | 57 | ||||
-rw-r--r-- | core/pim/notes/editwindow.h | 22 | ||||
-rw-r--r-- | core/pim/notes/main.cpp | 12 | ||||
-rw-r--r-- | core/pim/notes/mainwindow.cpp | 255 | ||||
-rw-r--r-- | core/pim/notes/mainwindow.h | 52 | ||||
-rw-r--r-- | core/pim/notes/opie-notes.pro | 11 |
7 files changed, 410 insertions, 0 deletions
@@ -1,198 +1,199 @@ 2005-??-?? Opie 1.2.2 New Features ------------ * Appearance: Added configuration options to set smallIconSize, bigIconSize, useBigPixmaps (hrw) + * Opie-Notes: Notes application based on NoteZ (hrw) Fixed Bugs ---------- * #1695 - Date selector use too small fontsize on VGA screen (hrw) * #1686 - opie-console lack UI setting for switching scrollbar (hrw) * #1647 - Opie-console doesn't respect scroll-bar on left side (hrw) * #1624 - Button settngs changes are applied only after restart (hrw) * #1492 - Backup and Restore does not show list of backups to restore on start (hrw) * n.a. - remove hardcoded font size from wellenreiter (hrw) * n.a. - added patch to build QT/E 2.3.10 with gc 4.x.x (hrw) 2005-09-11 Opie 1.2.1 New Features ------------ * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer) * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl) * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl) * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl) * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw) * ZSafe: Made UI conform to Opie standards (drw) * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw) * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl) * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl) * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl) * Opie-smb: Added Opie front end for Samba (ljp) * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie) * Opieplayer: rudimentary podcast support (ljp) Fixed Bugs ---------- * #1377 - Suspend Powermanagement when switched to another VT (mickeyl) - We actually suspend the complete Opie now in that case. * #1384 - Battery status updated improperly when charging (skyhusker) * #1476 - Wrong order of application entries in the O-menu (skyhusker) * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl) * #1535 - Missing line break and unnecessary location shown with Today-Calendar plugin (deller) * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw) * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker) * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker) * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) * #1635 - opie-today, datebook-plugin does not show notes (skyhusker) * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker) * #1666 - Opie-IRC does not allow to add !channels in config as autojoin ones (skyhusker) * #1667 - Opie-IRC does not show messages from !channel (skyhusker) * #1679 - Security PIN plugin is QVGA sized (hrw) * #1682 - Properly resize tab control in OTabWidget (drw) * n.a. - always show volume and wireless applet popups inside visible screen (deller) * n.a. - scale O-Menu-Applets appropriately (mickeyl) * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl) * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl) * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl) * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw) * n.a. - remove hardcoded font size from netsystemtime (hrw) * n.a. - remove hardcoded font size from checkbook graphs (hrw) * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw) Internal -------- * Make BluezApplet use OTaskbarApplet (mickeyl) * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl) * libopiecore: add ODirNotification - recursive directory notifications (mickeyl) * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl) * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl) * libopienet: Miscellaneous API cleanups (mickeyl) * libopiecore: Add linux pcmcia system abstraction classes (mickeyl) * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl) * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl) * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl) * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl) * Fix / Optimize number of scanned directories (ljp) * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl) 2005-03-25 Opie 1.2.0 Fixed Bugs ---------- * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) * n.a. - make qpeglobal.h include qglobal.h (zecke) 2005-03-20 Opie 1.2.0-rc1 New Features ------------ * Launcher: Support a static background pixmap (mickeyl) * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) * PackageManager supports the 'lists_dir' ipkg configuration option (drw) * Added hi-res inline images for large resolution devices (drw) * Improved launcher icons for consistency (ar) * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) Fixed Bugs ---------- * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) * #1482 - Fix double '/' in paths (zecke) * #1536 - Autosave of custom locations in opie backup (ar) * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) * #1558 - Fixed opie-login breaking opie startup (mickeyl) * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) * #1604 - Checkbook crashed on startup (drw) * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw) * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw) * n.a. - AddressBook - fixed sorting by 'File As' name (drw) * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers) * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw) Internal -------- * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl) * Killed the need for weak symbols in QtE (zecke) * Added optional building libqpe without inline images (mickeyl) * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw) 2005-02-03 Opie 1.1.9 New Features ------------ * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) * Usability enhancements in OpieIRC (skyhusker) Fixed Bugs ---------- * #1501 - Fixed bug in todo sql backend (eilers) * #1505 - Added more Swap sizes in memoryapplet (mickeyl) * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) * n.a. - Fixed numerous buglets in OpieIRC (skyhusker) Internal -------- * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) * Made Opie compilable with Qt/Embedded 2.3.10 (ar) * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) * Build tree cleanups (mickeyl) 2004-11-26 Opie 1.1.8 New Features ------------ * PackageManager supports installation of local ipkg files (drw) * PackageManager supports linking of applications to root (drw) * PackageManager supports src/gz feeds (drw,wimpie) * Added a syslog information tab to sysinfo (mickeyl) * Added new, more consistent, PIM icons + a GIMP teplate (ar) Fixed Bugs ---------- * #1017 - Tetrix doesn't display correctly for high resolution screens (drw) * #1269 - VCards were imported into personal area if it was activated (eilers) * #1464 - Packagemanager dont set active filter after install a package (drw) * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers) * #1493 - Fixed one column layout bug of the launcher (hrw) * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw) * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw) * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl) Internal -------- * Moved libopie1 to unsupported (mickeyl) * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers) * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers) 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 ) |