summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-write/mainwindow.cpp222
1 files changed, 113 insertions, 109 deletions
diff --git a/noncore/apps/opie-write/mainwindow.cpp b/noncore/apps/opie-write/mainwindow.cpp
index ed95e83..bcafd16 100644
--- a/noncore/apps/opie-write/mainwindow.cpp
+++ b/noncore/apps/opie-write/mainwindow.cpp
@@ -1,570 +1,574 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** Licensees holding valid Qtopia Developer license may use this
** file in accordance with the Qtopia Developer License Agreement
** provided with the Software.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
** THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
** PURPOSE.
**
** email sales@trolltech.com for information about Qtopia License
** Agreements.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "mainwindow.h"
#include <qpe/fileselector.h>
#include <qpe/applnk.h>
#include <qpe/resource.h>
+#include <qpe/fontdatabase.h>
+
//#include "qspellchecker.h"
#include "qtextedit.h"
#include <qaction.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qtabwidget.h>
#include <qapplication.h>
#include <qfontdatabase.h>
#include <qcombobox.h>
#include <qlineedit.h>
#include <qfileinfo.h>
#include <qfile.h>
#include <qfiledialog.h>
#include <qprinter.h>
#include <qpaintdevicemetrics.h>
#include <qmenubar.h>
#include <qpopupmenu.h>
#include <qcolordialog.h>
#include <qpainter.h>
#include <qstyle.h>
class ButtonMenu : public QToolButton
{
Q_OBJECT
public:
ButtonMenu( QWidget *parent, const char *name=0 )
- : QToolButton( parent, name ), current(0)
+ : QToolButton( parent, name ), current(0)
{
- setPopup( new QPopupMenu( this ) );
- setPopupDelay( 1 );
- connect( popup(), SIGNAL(activated(int)), this, SLOT(selected(int)) );
+ setPopup( new QPopupMenu( this ) );
+ setPopupDelay( 1 );
+ connect( popup(), SIGNAL(activated(int)), this, SLOT(selected(int)) );
}
int insertItem(const QIconSet &icon, const QString &text, int id ) {
- if ( !popup()->count() ) {
- setIconSet( icon );
- current = id;
- }
- return popup()->insertItem( icon, text, id );
+ if ( !popup()->count() ) {
+ setIconSet( icon );
+ current = id;
+ }
+ return popup()->insertItem( icon, text, id );
}
void setCurrentItem( int id ) {
- if ( id != current ) {
- current = id;
- setIconSet( *popup()->iconSet( id ) );
- }
+ if ( id != current ) {
+ current = id;
+ setIconSet( *popup()->iconSet( id ) );
+ }
}
virtual QSize sizeHint() const {
- return QToolButton::sizeHint() + QSize( 4, 0 );
+ return QToolButton::sizeHint() + QSize( 4, 0 );
}
signals:
void activated( int id );
protected slots:
void selected( int id ) {
- current = id;
- setIconSet( *popup()->iconSet( id ) );
- emit activated( id );
+ current = id;
+ setIconSet( *popup()->iconSet( id ) );
+ emit activated( id );
}
protected:
virtual void drawButtonLabel( QPainter *p ) {
- p->translate( -4, 0 );
- QToolButton::drawButtonLabel( p );
- p->translate( 4, 0 );
+ p->translate( -4, 0 );
+ QToolButton::drawButtonLabel( p );
+ p->translate( 4, 0 );
}
private:
int current;
};
//===========================================================================
MainWindow::MainWindow( QWidget *parent, const char *name )
: QMainWindow( parent, name ),
doc( 0 )
{
setRightJustification(TRUE);
editorStack = new QWidgetStack( this );
fileSelector = new FileSelector( "text/html",
- editorStack, "fileselector" );
+ editorStack, "fileselector" );
fileSelector->setCloseVisible( FALSE );
editorStack->addWidget( fileSelector, 0 );
editor = new Qt3::QTextEdit( editorStack );
editor->setTextFormat( Qt::RichText );
editorStack->addWidget( editor, 1 );
setupActions();
QObject::connect( fileSelector, SIGNAL(closeMe()),
- this, SLOT(showEditTools()) );
+ this, SLOT(showEditTools()) );
QObject::connect( fileSelector, SIGNAL(fileSelected(const DocLnk &)),
- this, SLOT(openFile(const DocLnk &)) );
+ this, SLOT(openFile(const DocLnk &)) );
QObject::connect( fileSelector, SIGNAL(newSelected(const DocLnk&)),
- this, SLOT(newFile(const DocLnk&)) );
+ this, SLOT(newFile(const DocLnk&)) );
if ( fileSelector->fileCount() < 1 )
- fileNew();
+ fileNew();
else {
- fileOpen();
+ fileOpen();
}
doConnections( editor );
setCentralWidget( editorStack );
}
MainWindow::~MainWindow()
{
save();
}
void MainWindow::setupActions()
{
setToolBarsMovable(false);
tbMenu = new QToolBar( this );
tbMenu->setHorizontalStretchable( TRUE );
QMenuBar *menu = new QMenuBar( tbMenu );
tbEdit = new QToolBar( this );
QPopupMenu *file = new QPopupMenu( this );
menu->insertItem( tr("File"), file );
QPopupMenu *edit = new QPopupMenu( this );
menu->insertItem( tr("Edit"), edit );
// ### perhaps these shortcut keys should have some
// IPaq keys defined???
QAction *a;
a = new QAction( tr( "New" ), Resource::loadPixmap("new"), QString::null, 0, this, 0 );
connect( a, SIGNAL(activated()), this, SLOT(fileNew()) );
a->addTo( file );
a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 );
connect( a, SIGNAL(activated()), this, SLOT(fileOpen()) );
a->addTo( file );
a = new QAction( tr( "Undo" ), Resource::loadIconSet("opie-write/undo"),
- QString::null, 0, this, "editUndo" );
+ QString::null, 0, this, "editUndo" );
connect( a, SIGNAL( activated() ), this, SLOT( editUndo() ) );
connect( editor, SIGNAL(undoAvailable(bool)), a, SLOT(setEnabled(bool)) );
a->addTo( tbEdit );
a->addTo( edit );
a = new QAction( tr( "Redo" ), Resource::loadIconSet("opie-write/redo"),
- QString::null, 0, this, "editRedo" );
+ QString::null, 0, this, "editRedo" );
connect( a, SIGNAL( activated() ), this, SLOT( editRedo() ) );
connect( editor, SIGNAL(redoAvailable(bool)), a, SLOT(setEnabled(bool)) );
a->addTo( tbEdit );
a->addTo( edit );
edit->insertSeparator();
a = new QAction( tr( "Copy" ), Resource::loadIconSet("copy"),
- QString::null, 0, this, "editCopy" );
+ QString::null, 0, this, "editCopy" );
connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
connect( editor, SIGNAL(copyAvailable(bool)), a, SLOT(setEnabled(bool)) );
a->addTo( tbEdit );
a->addTo( edit );
a = new QAction( tr( "Cut" ), Resource::loadIconSet("cut"),
- QString::null, 0, this, "editCut" );
+ QString::null, 0, this, "editCut" );
connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
connect( editor, SIGNAL(copyAvailable(bool)), a, SLOT(setEnabled(bool)) );
a->addTo( tbEdit );
a->addTo( edit );
a = new QAction( tr( "Paste" ), Resource::loadPixmap("paste"),
- QString::null, 0, this, "editPaste" );
+ QString::null, 0, this, "editPaste" );
connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
a->addTo( tbEdit );
a->addTo( edit );
tbFont = new QToolBar( this );
tbFont->setLabel( "Font Actions" );
tbFont->setHorizontalStretchable(TRUE);
comboFont = new QComboBox( FALSE, tbFont );
- QFontDatabase db;
+ FontDatabase db;
+ QStringList f= db.families();
comboFont->insertStringList( db.families() );
connect( comboFont, SIGNAL( activated( const QString & ) ),
- this, SLOT( textFamily( const QString & ) ) );
+ this, SLOT( textFamily( const QString & ) ) );
comboFont->setCurrentItem( comboFont->listBox()->index( comboFont->listBox()->findItem( QApplication::font().family() ) ) );
+ comboFont->setMaximumWidth(90);
comboSize = new QComboBox( TRUE, tbFont );
QValueList<int> sizes = db.standardSizes();
QValueList<int>::Iterator it = sizes.begin();
for ( ; it != sizes.end(); ++it )
- comboSize->insertItem( QString::number( *it ) );
+ comboSize->insertItem( QString::number( *it ) );
connect( comboSize, SIGNAL( activated( const QString & ) ),
- this, SLOT( textSize( const QString & ) ) );
+ this, SLOT( textSize( const QString & ) ) );
comboSize->lineEdit()->setText( QString::number( QApplication::font().pointSize() ) );
comboSize->setFixedWidth( 38 );
tbStyle = new QToolBar( this );
tbStyle->setLabel( "Style Actions" );
actionTextBold = new QAction( tr( "Bold" ),
- Resource::loadPixmap("bold"),
- QString::null, CTRL + Key_B,
- this, "textBold" );
+ Resource::loadPixmap("bold"),
+ QString::null, CTRL + Key_B,
+ this, "textBold" );
connect( actionTextBold, SIGNAL( activated() ), this, SLOT( textBold() ) );
actionTextBold->addTo( tbStyle );
actionTextBold->setToggleAction( TRUE );
actionTextItalic = new QAction( tr( "Italic" ),
- Resource::loadPixmap("italic"),
- tr( "&Italic" ), CTRL + Key_I,
- this, "textItalic" );
+ Resource::loadPixmap("italic"),
+ tr( "&Italic" ), CTRL + Key_I,
+ this, "textItalic" );
connect( actionTextItalic, SIGNAL( activated() ), this,
- SLOT( textItalic() ) );
+ SLOT( textItalic() ) );
actionTextItalic->addTo( tbStyle );
actionTextItalic->setToggleAction( TRUE );
actionTextUnderline = new QAction( tr( "Underline" ),
- Resource::loadPixmap("underline"),
- tr( "&Underline" ), CTRL + Key_U,
- this, "textUnderline" );
+ Resource::loadPixmap("underline"),
+ tr( "&Underline" ), CTRL + Key_U,
+ this, "textUnderline" );
connect( actionTextUnderline, SIGNAL( activated() ),
- this, SLOT( textUnderline() ) );
+ this, SLOT( textUnderline() ) );
actionTextUnderline->addTo( tbStyle );
actionTextUnderline->setToggleAction( TRUE );
alignMenu = new ButtonMenu( tbStyle );
alignMenu->insertItem( Resource::loadPixmap("left"), tr("Left"), AlignLeft );
alignMenu->insertItem( Resource::loadPixmap("center"), tr("Center"), AlignCenter );
alignMenu->insertItem( Resource::loadPixmap("right"), tr("Right"), AlignRight );
alignMenu->insertItem( Resource::loadPixmap("opie-write/justify"), tr("Full"), Qt3::AlignJustify );
connect( alignMenu, SIGNAL(activated(int)), this, SLOT(textAlign(int)) );
}
Qt3::QTextEdit *MainWindow::currentEditor() const
{
- return editor;
+ return editor;
}
void MainWindow::doConnections( Qt3::QTextEdit *e )
{
connect( e, SIGNAL( currentFontChanged( const QFont & ) ),
- this, SLOT( fontChanged( const QFont & ) ) );
+ this, SLOT( fontChanged( const QFont & ) ) );
connect( e, SIGNAL( currentColorChanged( const QColor & ) ),
- this, SLOT( colorChanged( const QColor & ) ) );
+ this, SLOT( colorChanged( const QColor & ) ) );
connect( e, SIGNAL( currentAlignmentChanged( int ) ),
- this, SLOT( alignmentChanged( int ) ) );
+ this, SLOT( alignmentChanged( int ) ) );
}
void MainWindow::updateFontSizeCombo( const QFont &f )
{
comboSize->clear();
- QFontDatabase fdb;
+ FontDatabase fdb;
QValueList<int> sizes = fdb.pointSizes( f.family() );
QValueList<int>::Iterator it = sizes.begin();
for ( ; it != sizes.end(); ++it )
- comboSize->insertItem( QString::number( *it ) );
+ comboSize->insertItem( QString::number( *it ) );
}
void MainWindow::editUndo()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->undo();
}
void MainWindow::editRedo()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->redo();
}
void MainWindow::editCut()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->cut();
}
void MainWindow::editCopy()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->copy();
}
void MainWindow::editPaste()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->paste();
}
void MainWindow::textBold()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->setBold( actionTextBold->isOn() );
}
void MainWindow::textUnderline()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->setUnderline( actionTextUnderline->isOn() );
}
void MainWindow::textItalic()
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->setItalic( actionTextItalic->isOn() );
}
void MainWindow::textFamily( const QString &f )
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->setFamily( f );
currentEditor()->viewport()->setFocus();
}
void MainWindow::textSize( const QString &p )
{
if ( !currentEditor() )
- return;
+ return;
currentEditor()->setPointSize( p.toInt() );
currentEditor()->viewport()->setFocus();
}
void MainWindow::textStyle( int i )
{
if ( !currentEditor() )
- return;
+ return;
if ( i == 0 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayBlock,
- Qt3::QStyleSheetItem::ListDisc );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayBlock,
+ Qt3::QStyleSheetItem::ListDisc );
else if ( i == 1 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
- Qt3::QStyleSheetItem::ListDisc );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
+ Qt3::QStyleSheetItem::ListDisc );
else if ( i == 2 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
- Qt3::QStyleSheetItem::ListCircle );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
+ Qt3::QStyleSheetItem::ListCircle );
else if ( i == 3 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
- Qt3::QStyleSheetItem::ListSquare );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
+ Qt3::QStyleSheetItem::ListSquare );
else if ( i == 4 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
- Qt3::QStyleSheetItem::ListDecimal );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
+ Qt3::QStyleSheetItem::ListDecimal );
else if ( i == 5 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
- Qt3::QStyleSheetItem::ListLowerAlpha );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
+ Qt3::QStyleSheetItem::ListLowerAlpha );
else if ( i == 6 )
- currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
- Qt3::QStyleSheetItem::ListUpperAlpha );
+ currentEditor()->setParagType( Qt3::QStyleSheetItem::DisplayListItem,
+ Qt3::QStyleSheetItem::ListUpperAlpha );
currentEditor()->viewport()->setFocus();
}
void MainWindow::textAlign( int a )
{
if ( !currentEditor() )
- return;
+ return;
editor->setAlignment( a );
}
void MainWindow::fontChanged( const QFont &f )
{
comboFont->setCurrentItem( comboFont->listBox()->index( comboFont->listBox()->findItem( f.family() ) ) );
updateFontSizeCombo( f );
comboSize->lineEdit()->setText( QString::number( f.pointSize() ) );
actionTextBold->setOn( f.bold() );
actionTextItalic->setOn( f.italic() );
actionTextUnderline->setOn( f.underline() );
}
void MainWindow::colorChanged( const QColor & )
{
}
void MainWindow::alignmentChanged( int a )
{
if ( ( a == Qt3::AlignAuto ) || ( a & AlignLeft )) {
- alignMenu->setCurrentItem(AlignLeft);
+ alignMenu->setCurrentItem(AlignLeft);
} else if ( ( a & AlignCenter ) ) {
- alignMenu->setCurrentItem(AlignCenter);
+ alignMenu->setCurrentItem(AlignCenter);
} else if ( ( a & AlignRight ) ) {
- alignMenu->setCurrentItem(AlignRight);
+ alignMenu->setCurrentItem(AlignRight);
} else if ( ( a & Qt3::AlignJustify ) ) {
- alignMenu->setCurrentItem(Qt3::AlignJustify);
+ alignMenu->setCurrentItem(Qt3::AlignJustify);
}
}
void MainWindow::editorChanged( QWidget * )
{
if ( !currentEditor() )
- return;
+ return;
fontChanged( currentEditor()->font() );
colorChanged( currentEditor()->color() );
alignmentChanged( currentEditor()->alignment() );
}
void MainWindow::fileOpen()
{
save();
editorStack->raiseWidget( fileSelector );
fileSelector->reread();
hideEditTools();
fileSelector->setNewVisible( TRUE );
clear();
updateCaption();
}
void MainWindow::fileRevert()
{
qDebug( "QMainWindow::fileRevert needs to be done" );
}
void MainWindow::fileNew()
{
editor->setTextFormat( Qt::RichText );
save();
newFile(DocLnk());
}
void MainWindow::insertTable()
{
qDebug( "MainWindow::insertTable() needs to be done" );
}
void MainWindow::newFile( const DocLnk &dl )
{
DocLnk nf = dl;
nf.setType( "text/html" );
clear();
editorStack->raiseWidget( editor );
editor->viewport()->setFocus();
doc = new DocLnk( nf );
updateCaption();
}
void MainWindow::openFile( const DocLnk &dl )
{
FileManager fm;
QString txt;
if ( !fm.loadFile( dl, txt ) )
- qDebug( "couldn't open file" );
+ qDebug( "couldn't open file" );
clear();
editorStack->raiseWidget( editor );
editor->viewport()->setFocus();
doc = new DocLnk( dl );
editor->setText( txt );
editor->setModified( FALSE );
updateCaption();
}
void MainWindow::showEditTools( void )
{
tbMenu->show();
tbEdit->show();
tbFont->show();
tbStyle->show();
}
void MainWindow::hideEditTools( void )
{
// let's reset the buttons...
actionTextBold->setOn( FALSE );
actionTextItalic->setOn( FALSE );
actionTextUnderline->setOn( FALSE );
//comboFont->setCurrentText( QApplication::font().family() );
comboSize->lineEdit()->setText( QString::number(QApplication::font().pointSize() ) );
tbMenu->hide();
tbEdit->hide();
tbFont->hide();
tbStyle->hide();
}
-
+
void MainWindow::save()
{
if ( !doc )
- return;
+ return;
if ( !editor->isModified() )
- return;
+ return;
QString rt = editor->text();
// quick hack to get around formatting...
editor->setTextFormat( Qt::PlainText );
QString pt = editor->text();
editor->setTextFormat( Qt::RichText );
if ( doc->name().isEmpty() ) {
- unsigned ispace = pt.find( ' ' );
- unsigned ienter = pt.find( '\n' );
- int i = (ispace < ienter) ? ispace : ienter;
- QString docname;
- if ( i == -1 ) {
- if ( pt.isEmpty() )
- docname = "Empty Text";
- else
- docname = pt;
- } else {
- docname = pt.left( i );
- }
- doc->setName(docname);
+ unsigned ispace = pt.find( ' ' );
+ unsigned ienter = pt.find( '\n' );
+ int i = (ispace < ienter) ? ispace : ienter;
+ QString docname;
+ if ( i == -1 ) {
+ if ( pt.isEmpty() )
+ docname = "Empty Text";
+ else
+ docname = pt;
+ } else {
+ docname = pt.left( i );
+ }
+ doc->setName(docname);
}
FileManager fm;
fm.saveFile( *doc, rt );
}
void MainWindow::clear()
{
delete doc;
doc = 0;
editor->clear();
}
void MainWindow::updateCaption()
{
if ( !doc )
- setCaption( tr("Rich Text Editor") );
+ setCaption( tr("Rich Text Editor") );
else {
- QString s = doc->name();
- if ( s.isEmpty() )
- s = tr( "Unnamed" );
- setCaption( s + " - " + tr("Rich Text Editor") );
+ QString s = doc->name();
+ if ( s.isEmpty() )
+ s = tr( "Unnamed" );
+ setCaption( s + " - " + tr("Rich Text Editor") );
}
}
void MainWindow::closeEvent( QCloseEvent *e )
{
if ( editorStack->visibleWidget() == editor ) {
- // call fileOpen instead, don't close it
- fileOpen();
- e->ignore();
+ // call fileOpen instead, don't close it
+ fileOpen();
+ e->ignore();
} else {
- e->accept();
+ e->accept();
}
}
#include "mainwindow.moc"