summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--apps/Applications/opie-smb.desktop6
-rw-r--r--core/applets/vmemo/vmemo.h8
-rw-r--r--core/apps/textedit/textedit.cpp58
-rw-r--r--core/pim/datebook/dateentry.ui1230
-rw-r--r--inputmethods/dasher/opie-dasher-english.control2
-rw-r--r--noncore/applets/volumeapplet2/volumeapplet.cpp58
-rw-r--r--noncore/applets/volumeapplet2/volumeapplet.h15
-rw-r--r--noncore/apps/advancedfm/advancedfmData.cpp7
-rw-r--r--noncore/apps/advancedfm/advancedfmMenu.cpp38
-rw-r--r--noncore/net/opie-smb/config.in4
-rw-r--r--noncore/net/opie-smb/main.cpp6
-rw-r--r--noncore/net/opie-smb/opie-smb.control12
-rw-r--r--noncore/net/opie-smb/opie-smb.pro18
-rw-r--r--noncore/net/opie-smb/qsmb.cpp402
-rw-r--r--noncore/net/opie-smb/qsmb.h39
-rw-r--r--noncore/net/opie-smb/qsmbbase.cpp146
-rw-r--r--noncore/net/opie-smb/qsmbbase.h62
-rw-r--r--noncore/net/opie-smb/qsmbbase.ui298
-rw-r--r--noncore/settings/netsystemtime/formattabwidget.cpp4
-rw-r--r--noncore/tools/calc2/binary/binary.pro28
-rw-r--r--noncore/tools/calc2/binary/binaryfactory.cpp2
-rw-r--r--noncore/tools/calc2/binary/binaryfactory.h4
-rw-r--r--noncore/tools/calc2/binary/binaryimpl.cpp2
-rw-r--r--noncore/tools/calc2/binary/binaryimpl.h2
-rw-r--r--noncore/tools/calc2/calc.cpp1
-rw-r--r--noncore/tools/calc2/simple/simple.pro22
-rw-r--r--noncore/tools/calc2/simple/simplefactory.cpp2
-rw-r--r--noncore/tools/calc2/simple/simplefactory.h4
-rw-r--r--noncore/tools/calc2/simple/simpleimpl.cpp2
-rw-r--r--noncore/tools/calc2/simple/simpleimpl.h4
-rw-r--r--packages5
-rw-r--r--pics/opie-smb/opie-smb.pngbin0 -> 1833 bytes
32 files changed, 1903 insertions, 588 deletions
diff --git a/apps/Applications/opie-smb.desktop b/apps/Applications/opie-smb.desktop
new file mode 100644
index 0000000..f3fe239
--- a/dev/null
+++ b/apps/Applications/opie-smb.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Comment=Samba Client Utility
+Exec=opie-smb
+Icon=opie-smb/opie-smb
+Type=Application
+Name=opie-smb
diff --git a/core/applets/vmemo/vmemo.h b/core/applets/vmemo/vmemo.h
index 1bd735f..806fe0e 100644
--- a/core/applets/vmemo/vmemo.h
+++ b/core/applets/vmemo/vmemo.h
@@ -1,65 +1,71 @@
/**************************************************************************************94x78**
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
*********************************************************************************************/
/*
* $Id$
*/
#ifndef __VMEMO_H__
#define __VMEMO_H__
#include <qwidget.h>
#include <qpixmap.h>
#include <qpe/applnk.h>
#include <qfile.h>
#include <qpe/qcopenvelope_qws.h>
#include <qlabel.h>
#include <qtimer.h>
class VMemo : public QWidget
{
Q_OBJECT
+
public:
+
VMemo( QWidget *parent, const char *name = NULL);
~VMemo();
static int position();
QFile track;
int length;
QString fileName, errorMsg, date;
QLabel* msgLabel;
QTimer *t_timer;
-bool usingIcon, useADPCM;
+ bool usingIcon, useADPCM;
+
public slots:
+
bool record();
void mousePressEvent( QMouseEvent * );
void mouseReleaseEvent( QMouseEvent * );
void receive( const QCString &msg, const QByteArray &data );
bool startRecording();
void stopRecording();
void timerBreak();
+
private:
+
bool useAlerts;
void paintEvent( QPaintEvent* );
int setToggleButton(int);
int openDSP();
int openWAV(const char *filename);
bool fromToggle;
QPixmap vmemoPixmap;
QCopChannel *myChannel;
bool systemZaurus;
int dsp, wav, rate, speed, channels, format, resolution;
bool recording;
};
#endif // __VMEMO_H__
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index ca760bb..759e440 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -142,1071 +142,1071 @@ void QpeEditor::find ( const QString &txt, bool caseSensitive,
line++;
col = 0;
}
}
}
#else
#error "Must make a QpeEditor that inherits QTextEdit"
#endif
static const int nfontsizes = 6;
static const int fontsize[nfontsizes] = {8,10,12,14,18,24};
TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f )
: QMainWindow( parent, name, f ), bFromDocView( false )
{
doc = 0;
edited=false;
fromSetDocument=false;
setToolBarsMovable( false );
connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
channel = new QCopChannel( "QPE/Application/textedit", this );
connect( channel, SIGNAL(received(const QCString&,const QByteArray&)),
this, SLOT(receive(const QCString&,const QByteArray&)) );
setIcon( Opie::Core::OResource::loadPixmap( "textedit/TextEditor", Opie::Core::OResource::SmallIcon ) );
QToolBar *bar = new QToolBar( this );
bar->setHorizontalStretchable( true );
menu = bar;
QMenuBar *mb = new QMenuBar( bar );
QPopupMenu *file = new QPopupMenu( this );
QPopupMenu *edit = new QPopupMenu( this );
QPopupMenu *advancedMenu = new QPopupMenu(this);
font = new QPopupMenu( this );
bar = new QToolBar( this );
editBar = bar;
QAction *a = new QAction( tr( "New" ), Opie::Core::OResource::loadPixmap( "new", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
// a->addTo( bar );
a->addTo( file );
a = new QAction( tr( "Open" ), Opie::Core::OResource::loadPixmap( "fileopen", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
a->addTo( bar );
a->addTo( file );
a = new QAction( tr( "Save" ), Opie::Core::OResource::loadPixmap( "save", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( save() ) );
file->insertSeparator();
a->addTo( bar );
a->addTo( file );
a = new QAction( tr( "Save As" ), Opie::Core::OResource::loadPixmap( "save", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) );
a->addTo( file );
a = new QAction( tr( "Cut" ), Opie::Core::OResource::loadPixmap( "cut", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) );
a->addTo( editBar );
a->addTo( edit );
a = new QAction( tr( "Copy" ), Opie::Core::OResource::loadPixmap( "copy", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) );
a->addTo( editBar );
a->addTo( edit );
a = new QAction( tr( "Paste" ), Opie::Core::OResource::loadPixmap( "paste", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) );
a->addTo( editBar );
a->addTo( edit );
#ifndef QT_NO_CLIPBOARD
a = new QAction( tr( "Insert Time and Date" ), Opie::Core::OResource::loadPixmap( "paste", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) );
a->addTo( edit );
#endif
a = new QAction( tr( "Goto Line..." ), Opie::Core::OResource::loadPixmap( "find", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) );
edit->insertSeparator();
a->addTo( edit );
a = new QAction( tr( "Find..." ), Opie::Core::OResource::loadPixmap( "find", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) );
a->addTo( bar );
a->addTo( edit );
zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 );
connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) );
zin->addTo( font );
zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 );
connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) );
zout->addTo( font );
font->insertSeparator();
font->insertItem(tr("Font"), this, SLOT(changeFont()) );
font->insertSeparator();
font->insertItem(tr("Advanced Features"), advancedMenu);
QAction *wa = new QAction( tr("Wrap lines"),
QString::null, 0, this, 0 );
connect( wa, SIGNAL( toggled(bool) ),
this, SLOT( setWordWrap(bool) ) );
wa->setToggleAction(true);
wa->addTo( advancedMenu);
nStart = new QAction( tr("Start with new file"),
QString::null, 0, this, 0 );
connect( nStart, SIGNAL( toggled(bool) ),
this, SLOT( changeStartConfig(bool) ) );
nStart->setToggleAction(true);
nStart->addTo( advancedMenu );
nStart->setEnabled(false);
nAdvanced = new QAction( tr("Prompt on Exit"),
QString::null, 0, this, 0 );
connect( nAdvanced, SIGNAL( toggled(bool) ),
this, SLOT( doPrompt(bool) ) );
nAdvanced->setToggleAction(true);
nAdvanced->addTo( advancedMenu );
desktopAction = new QAction( tr("Always open linked file"),
QString::null, 0, this, 0 );
connect( desktopAction, SIGNAL( toggled(bool) ),
this, SLOT( doDesktop(bool) ) );
desktopAction->setToggleAction(true);
desktopAction->addTo( advancedMenu);
filePermAction = new QAction( tr("File Permissions"),
QString::null, 0, this, 0 );
connect( filePermAction, SIGNAL( toggled(bool) ),
this, SLOT( doFilePerms(bool) ) );
filePermAction->setToggleAction(true);
filePermAction->addTo( advancedMenu);
searchBarAction = new QAction( tr("Search Bar Open"),
QString::null, 0, this, 0 );
connect( searchBarAction, SIGNAL( toggled(bool) ),
this, SLOT( setSearchBar(bool) ) );
searchBarAction->setToggleAction(true);
searchBarAction->addTo( advancedMenu);
nAutoSave = new QAction( tr("Auto Save 5 min."),
QString::null, 0, this, 0 );
connect( nAutoSave, SIGNAL( toggled(bool) ),
this, SLOT( doTimer(bool) ) );
nAutoSave->setToggleAction(true);
nAutoSave->addTo( advancedMenu);
//font->insertSeparator();
//font->insertItem(tr("About"), this, SLOT( doAbout()) );
mb->insertItem( tr( "File" ), file );
mb->insertItem( tr( "Edit" ), edit );
mb->insertItem( tr( "View" ), font );
searchBar = new QToolBar(this);
addToolBar( searchBar, "Search", QMainWindow::Top, true );
searchBar->setHorizontalStretchable( true );
searchEdit = new QLineEdit( searchBar, "searchEdit" );
searchBar->setStretchableWidget( searchEdit );
connect( searchEdit, SIGNAL( textChanged(const QString&) ),
this, SLOT( search() ) );
a = new QAction( tr( "Find Next" ), Opie::Core::OResource::loadPixmap( "next", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) );
a->addTo( searchBar );
a->addTo( edit );
a = new QAction( tr( "Close Find" ), Opie::Core::OResource::loadPixmap( "close", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
a->addTo( searchBar );
edit->insertSeparator();
a = new QAction( tr( "Delete" ), Opie::Core::OResource::loadPixmap( "close", Opie::Core::OResource::SmallIcon ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) );
a->addTo( edit );
searchBar->hide();
editor = new QpeEditor( this );
setCentralWidget( editor );
editor->setFrameStyle( QFrame::Panel | QFrame::Sunken );
connect( editor, SIGNAL( textChanged() ),
this, SLOT( editorChanged() ) );
QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold);
Config cfg("TextEdit");
cfg. setGroup ( "Font" );
QFont defaultFont = editor-> font ( );
QString family = cfg. readEntry ( "Family", defaultFont. family ( ));
int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( ));
int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( ));
bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( ));
defaultFont = QFont ( family, size, weight, italic );
editor-> setFont ( defaultFont );
// updateCaption();
cfg.setGroup ( "View" );
promptExit = cfg.readBoolEntry ( "PromptExit", false );
openDesktop = cfg.readBoolEntry ( "OpenDesktop", true );
filePerms = cfg.readBoolEntry ( "FilePermissions", false );
useSearchBar = cfg.readBoolEntry ( "SearchBar", false );
startWithNew = cfg.readBoolEntry ( "startNew", true);
featureAutoSave = cfg.readBoolEntry( "autosave", false);
if(useSearchBar) searchBarAction->setOn(true);
if(promptExit) nAdvanced->setOn( true );
if(openDesktop) desktopAction->setOn( true );
if(filePerms) filePermAction->setOn( true );
if(startWithNew) nStart->setOn( true );
if(featureAutoSave) nAutoSave->setOn(true);
// {
// doTimer(true);
// }
bool wrap = cfg. readBoolEntry ( "Wrap", true );
wa-> setOn ( wrap );
setWordWrap ( wrap );
/////////////////
if( qApp->argc() > 1) {
currentFileName=qApp->argv()[1];
QFileInfo fi(currentFileName);
if(fi.baseName().left(1) == "") {
openDotFile(currentFileName);
} else {
openFile(currentFileName);
}
} else {
edited1=false;
openDotFile("");
}
viewSelection = cfg.readNumEntry( "FileView", 0 );
}
TextEdit::~TextEdit() {
if( edited1 && !promptExit) {
switch( savePrompt() ) {
case 1: {
saveAs();
}
break;
};
}
delete editor;
}
void TextEdit::closeEvent(QCloseEvent *) {
if( promptExit) {
switch( savePrompt() ) {
case 1: {
saveAs();
qApp->quit();
}
break;
case 2: {
qApp->quit();
}
break;
case -1:
break;
};
}
else
qApp->quit();
}
void TextEdit::cleanUp() {
Config cfg ( "TextEdit" );
cfg. setGroup ( "Font" );
QFont f = editor->font();
cfg.writeEntry ( "Family", f. family ( ));
cfg.writeEntry ( "Size", f. pointSize ( ));
cfg.writeEntry ( "Weight", f. weight ( ));
cfg.writeEntry ( "Italic", f. italic ( ));
cfg.setGroup ( "View" );
cfg.writeEntry ( "Wrap", editor->wordWrap() == QMultiLineEdit::WidgetWidth );
cfg.writeEntry ( "FileView", viewSelection );
cfg.writeEntry ( "PromptExit", promptExit );
cfg.writeEntry ( "OpenDesktop", openDesktop );
cfg.writeEntry ( "FilePermissions", filePerms );
cfg.writeEntry ( "SearchBar", useSearchBar );
cfg.writeEntry ( "startNew", startWithNew );
}
void TextEdit::accept() {
if( edited1)
saveAs();
qApp->quit();
}
void TextEdit::zoomIn() {
setFontSize(editor->font().pointSize()+1,false);
}
void TextEdit::zoomOut() {
setFontSize(editor->font().pointSize()-1,true);
}
void TextEdit::setFontSize(int sz, bool round_down_not_up) {
int s=10;
for (int i=0; i<nfontsizes; i++) {
if ( fontsize[i] == sz ) {
s = sz;
break;
} else if ( round_down_not_up ) {
if ( fontsize[i] < sz )
s = fontsize[i];
} else {
if ( fontsize[i] > sz ) {
s = fontsize[i];
break;
}
}
}
QFont f = editor->font();
f.setPointSize(s);
editor->setFont(f);
zin->setEnabled(s != fontsize[nfontsizes-1]);
zout->setEnabled(s != fontsize[0]);
}
void TextEdit::setBold(bool y) {
QFont f = editor->font();
f.setBold(y);
editor->setFont(f);
}
void TextEdit::setItalic(bool y) {
QFont f = editor->font();
f.setItalic(y);
editor->setFont(f);
}
void TextEdit::setWordWrap(bool y) {
bool state = editor->edited();
QString captionStr = caption();
bool b1 = edited1;
bool b2 = edited;
editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap );
editor->setEdited( state );
edited1=b1;
edited=b2;
setCaption(captionStr);
}
void TextEdit::setSearchBar(bool b) {
useSearchBar=b;
Config cfg("TextEdit");
cfg.setGroup("View");
cfg.writeEntry ( "SearchBar", b );
searchBarAction->setOn(b);
if(b)
searchBar->show();
else
searchBar->hide();
editor->setFocus();
}
void TextEdit::fileNew() {
// if( !bFromDocView ) {
// saveAs();
// }
newFile(DocLnk());
}
void TextEdit::fileOpen() {
Config cfg("TextEdit");
cfg. setGroup ( "View" );
QMap<QString, QStringList> map;
map.insert(tr("All"), QStringList() );
QStringList text;
text << "text/*";
map.insert(tr("Text"), text );
text << "*";
map.insert(tr("All"), text );
QString str = OFileDialog::getOpenFileName( 2,
QString::null ,
QString::null, map);
if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() )
{
openFile( str );
}
else
updateCaption();
}
void TextEdit::doSearchBar() {
if(!useSearchBar)
searchBar->hide();
else
searchBar->show();
}
#if 0
void TextEdit::slotFind() {
FindDialog frmFind( tr("Text Editor"), this );
connect( &frmFind, SIGNAL(signalFindClicked(const QString&,bool,bool,int)),
editor, SLOT(slotDoFind(const QString&,bool,bool)));
//case sensitive, backwards, [category]
connect( editor, SIGNAL(notFound()),
&frmFind, SLOT(slotNotFound()) );
connect( editor, SIGNAL(searchWrapped()),
&frmFind, SLOT(slotWrapAround()) );
frmFind.exec();
}
#endif
void TextEdit::fileRevert() {
clear();
fileOpen();
}
void TextEdit::editCut() {
#ifndef QT_NO_CLIPBOARD
editor->cut();
#endif
}
void TextEdit::editCopy() {
#ifndef QT_NO_CLIPBOARD
editor->copy();
#endif
}
void TextEdit::editPaste() {
#ifndef QT_NO_CLIPBOARD
editor->paste();
#endif
}
void TextEdit::editFind() {
searchBar->show();
searchEdit->setFocus();
}
void TextEdit::findNext() {
editor->find( searchEdit->text(), false, false );
}
void TextEdit::findClose() {
searchBar->hide();
}
void TextEdit::search() {
editor->find( searchEdit->text(), false, false );
}
void TextEdit::newFile( const DocLnk &f ) {
DocLnk nf = f;
nf.setType("text/plain");
clear();
setWState (WState_Reserved1 );
editor->setFocus();
doc = new DocLnk(nf);
currentFileName = "Unnamed";
odebug << "newFile "+currentFileName << oendl;
updateCaption( currentFileName);
// editor->setEdited( false);
}
void TextEdit::openDotFile( const QString &f ) {
if(!currentFileName.isEmpty()) {
currentFileName=f;
odebug << "openFile dotfile " + currentFileName << oendl;
QString txt;
QFile file(f);
file.open(IO_ReadWrite);
QTextStream t(&file);
while ( !t.atEnd()) {
txt+=t.readLine()+"\n";
}
editor->setText(txt);
editor->setEdited( false);
edited1=false;
edited=false;
}
updateCaption( currentFileName);
}
void TextEdit::openFile( const QString &f ) {
odebug << "filename is "+ f << oendl;
QString filer;
QFileInfo fi( f);
// bFromDocView = true;
if(f.find(".desktop",0,true) != -1 && !openDesktop )
{
switch ( QMessageBox::warning(this,tr("Text Editor"),tr("Text Editor has detected<BR>you selected a <B>.desktop</B>file.<BR>Open<B>.desktop</B> file or <B>linked</B> file?"),tr(".desktop File"),tr("Linked Document"),0,1,1) )
{
case 0: //desktop
filer = f;
break;
case 1: //linked
DocLnk sf(f);
filer = sf.file();
break;
};
}
else if(fi.baseName().left(1) == "")
{
odebug << "opening dotfile" << oendl;
currentFileName=f;
openDotFile(currentFileName);
return;
}
/*
* The problem is a file where Config(f).isValid() and it does not
* end with .desktop will be treated as desktop file
*/
else if (f.find(".desktop",0,true) != -1 )
{
DocLnk sf(f);
filer = sf.file();
if(filer.right(1) == "/")
filer = f;
}
else
filer = f;
DocLnk nf;
nf.setType("text/plain");
nf.setFile(filer);
currentFileName=filer;
nf.setName(fi.baseName());
openFile(nf);
odebug << "openFile string "+currentFileName << oendl;
showEditTools();
// Show filename in caption
QString name = filer;
int sep = name.findRev( '/' );
if ( sep > 0 )
name = name.mid( sep+1 );
updateCaption( name );
}
void TextEdit::openFile( const DocLnk &f ) {
// clear();
// bFromDocView = true;
FileManager fm;
QString txt;
currentFileName=f.file();
odebug << "openFile doclnk " + currentFileName << oendl;
if ( !fm.loadFile( f, txt ) ) {
// ####### could be a new file
odebug << "Cannot open file" << oendl;
}
// fileNew();
if ( doc )
delete doc;
doc = new DocLnk(f);
editor->setText(txt);
editor->setEdited( false);
edited1=false;
edited=false;
doc->setName(currentFileName);
updateCaption();
setTimer();
}
void TextEdit::showEditTools() {
menu->show();
editBar->show();
if(!useSearchBar)
searchBar->hide();
else
searchBar->show();
setWState (WState_Reserved1 );
}
/*!
unprompted save */
bool TextEdit::save() {
QString name, file;
odebug << "saveAsFile " + currentFileName << oendl;
if(currentFileName.isEmpty()) {
saveAs();
return false;
}
name = currentFileName;
if(doc) {
file = doc->file();
odebug << "saver file "+file << oendl;
name = doc->name();
odebug << "File named "+name << oendl;
} else {
file = currentFileName;
name = QFileInfo(currentFileName).baseName();
}
QString rt = editor->text();
if( !rt.isEmpty() ) {
if(name.isEmpty()) {
saveAs();
} else {
currentFileName = name;
odebug << "saveFile "+currentFileName << oendl;
struct stat buf;
mode_t mode;
stat(file.latin1(), &buf);
mode = buf.st_mode;
if(!fileIs) {
doc->setName( name);
FileManager fm;
if ( !fm.saveFile( *doc, rt ) ) {
QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
return false;
}
} else {
odebug << "regular save file" << oendl;
QFile f(file);
if( f.open(IO_WriteOnly)) {
QCString crt = rt.utf8();
f.writeBlock(crt,crt.length());
} else {
QMessageBox::message(tr("Text Edit"),tr("Write Failed"));
return false;
}
}
editor->setEdited( false);
edited1=false;
edited=false;
if(caption().left(1)=="*")
setCaption(caption().right(caption().length()-1));
chmod( file.latin1(), mode);
}
return true;
}
return false;
}
/*!
prompted save */
bool TextEdit::saveAs() {
if(caption() == tr("Text Editor"))
return false;
odebug << "saveAsFile " + currentFileName << oendl;
// case of nothing to save...
// if ( !doc && !currentFileName.isEmpty()) {
// //|| !bFromDocView)
// odebug << "no doc" << oendl;
// return true;
// }
// if ( !editor->edited() ) {
// delete doc;
// doc = 0;
// return true;
// }
QString rt = editor->text();
odebug << currentFileName << oendl;
if( currentFileName.isEmpty()
|| currentFileName == tr("Unnamed")
|| currentFileName == tr("Text Editor")) {
odebug << "do silly TT filename thing" << oendl;
// if ( doc && doc->name().isEmpty() ) {
QString pt = rt.simplifyWhiteSpace();
int i = pt.find( ' ' );
QString docname = pt;
if ( i > 0 )
docname = pt.left( i );
// remove "." at the beginning
while( docname.startsWith( "." ) )
docname = docname.mid( 1 );
docname.replace( QRegExp("/"), "_" );
// cut the length. filenames longer than that
//don't make sense and something goes wrong when they get too long.
if ( docname.length() > 40 )
docname = docname.left(40);
if ( docname.isEmpty() )
docname = tr("Unnamed");
if(doc) doc->setName(docname);
currentFileName=docname;
// }
// else
// odebug << "hmmmmmm" << oendl;
}
QMap<QString, QStringList> map;
map.insert(tr("All"), QStringList() );
QStringList text;
text << "text/*";
map.insert(tr("Text"), text );
text << "*";
map.insert(tr("All"), text );
QFileInfo cuFi( currentFileName);
QString filee = cuFi.fileName();
QString dire = cuFi.dirPath();
if(dire==".")
dire = QPEApplication::documentDir();
QString str;
if( !featureAutoSave) {
- str = OFileDialog::getSaveFileName( 2,
- dire,
- filee, map);
- } else
- str=currentFileName;
+ str = OFileDialog::getSaveFileName( 2,
+ dire,
+ filee, map);
+ } else
+ str = currentFileName;
if(!str.isEmpty()) {
QString fileNm=str;
odebug << "saving filename "+fileNm << oendl;
QFileInfo fi(fileNm);
currentFileName=fi.fileName();
if(doc)
// QString file = doc->file();
// doc->removeFiles();
delete doc;
- DocLnk nf;
- nf.setType("text/plain");
- nf.setFile( fileNm);
- doc = new DocLnk(nf);
+ DocLnk nf;
+ nf.setType("text/plain");
+ nf.setFile( fileNm);
+ doc = new DocLnk(nf);
// editor->setText(rt);
- odebug << "Saving file as "+currentFileName << oendl;
- doc->setName( fi.baseName() /*currentFileName*/);
- updateCaption( currentFileName);
-
- FileManager fm;
- if ( !fm.saveFile( *doc, rt ) ) {
- QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
- return false;
- }
-
- if( filePerms ) {
- filePermissions *filePerm;
- filePerm = new filePermissions(this,
- tr("Permissions"),true,
- 0,(const QString &)fileNm);
- QPEApplication::execDialog( filePerm );
-
- if( filePerm)
- delete filePerm;
- }
+ odebug << "Saving file as "+currentFileName << oendl;
+ doc->setName( fi.baseName() /*currentFileName*/);
+ updateCaption( currentFileName);
+
+ FileManager fm;
+ if ( !fm.saveFile( *doc, rt ) ) {
+ QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
+ return false;
+ }
+
+ if( filePerms ) {
+ filePermissions *filePerm;
+ filePerm = new filePermissions(this,
+ tr("Permissions"),true,
+ 0,(const QString &)fileNm);
+ QPEApplication::execDialog( filePerm );
+
+ if( filePerm)
+ delete filePerm;
+ }
// }
editor->setEdited( false);
edited1 = false;
edited = false;
if(caption().left(1)=="*")
setCaption(caption().right(caption().length()-1));
return true;
}
odebug << "returning false" << oendl;
currentFileName = "";
return false;
} //end saveAs
void TextEdit::clear() {
delete doc;
doc = 0;
editor->clear();
}
void TextEdit::updateCaption( const QString &name ) {
if ( name.isEmpty() )
setCaption( tr("Text Editor") );
else {
QString s = name;
if ( s.isNull() )
s = doc->name();
if ( s.isEmpty() ) {
s = tr( "Unnamed" );
currentFileName=s;
}
// if(s.left(1) == "/")
// s = s.right(s.length()-1);
setCaption( tr("%1 - Text Editor").arg( s ) );
}
}
void TextEdit::setDocument(const QString& fileref) {
if(fileref != "Unnamed") {
currentFileName=fileref;
odebug << "setDocument" << oendl;
QFileInfo fi(currentFileName);
odebug << "basename:"+fi.baseName()+": current filenmame "+currentFileName << oendl;
if( (fi.baseName().left(1)).isEmpty() ) {
openDotFile(currentFileName);
} else {
odebug << "setDoc open" << oendl;
bFromDocView = true;
openFile(fileref);
editor->setEdited(true);
edited1=false;
edited=true;
// fromSetDocument=false;
// doSearchBar();
}
}
updateCaption( currentFileName);
}
void TextEdit::changeFont() {
QDialog *d = new QDialog ( this, "FontDialog", true );
d-> setCaption ( tr( "Choose font" ));
QBoxLayout *lay = new QVBoxLayout ( d );
OFontSelector *ofs = new OFontSelector ( true, d );
lay-> addWidget ( ofs );
ofs-> setSelectedFont ( editor-> font ( ));
if ( QPEApplication::execDialog( d ) == QDialog::Accepted )
editor-> setFont ( ofs-> selectedFont ( ));
delete d;
}
void TextEdit::editDelete() {
switch ( QMessageBox::warning(this,tr("Text Editor"),
tr("Do you really want<BR>to <B>delete</B> "
"the current file\nfrom the disk?<BR>This is "
"<B>irreversable!</B>"),
tr("Yes"),tr("No"),0,0,1) ) {
case 0:
if(doc) {
doc->removeFiles();
clear();
setCaption( tr("Text Editor") );
}
break;
case 1:
// exit
break;
};
}
void TextEdit::changeStartConfig( bool b ) {
startWithNew=b;
Config cfg("TextEdit");
cfg.setGroup("View");
cfg.writeEntry("startNew",b);
update();
}
void TextEdit::editorChanged() {
// odebug << "editor changed" << oendl;
if( /*editor->edited() &&*/ /*edited && */!edited1) {
setCaption( "*"+caption());
edited1=true;
}
edited=true;
}
void TextEdit::receive(const QCString&msg, const QByteArray &) {
odebug << "QCop "+msg << oendl;
if ( msg == "setDocument(QString)" ) {
odebug << "bugger all" << oendl;
}
}
void TextEdit::doAbout() {
QMessageBox::about(0,tr("Text Edit"),tr("Text Edit is copyright<BR>"
"2000 Trolltech AS, and<BR>"
"2002 by <B>L. J. Potter <BR>llornkcor@handhelds.org</B><BR>"
"and is licensed under the GPL"));
}
void TextEdit::doPrompt(bool b) {
promptExit=b;
Config cfg("TextEdit");
cfg.setGroup ( "View" );
cfg.writeEntry ( "PromptExit", b);
}
void TextEdit::doDesktop(bool b) {
openDesktop=b;
Config cfg("TextEdit");
cfg.setGroup ( "View" );
cfg.writeEntry ( "OpenDesktop", b);
}
void TextEdit::doFilePerms(bool b) {
filePerms=b;
Config cfg("TextEdit");
cfg.setGroup ( "View" );
cfg.writeEntry ( "FilePermissions", b);
}
void TextEdit::editPasteTimeDate() {
#ifndef QT_NO_CLIPBOARD
QClipboard *cb = QApplication::clipboard();
QDateTime dt = QDateTime::currentDateTime();
cb->setText( dt.toString());
editor->paste();
#endif
}
int TextEdit::savePrompt()
{
switch( QMessageBox::information( 0, (tr("Textedit")),
(tr("Textedit detected\n"
"you have unsaved changes\n"
"Go ahead and save?\n")),
(tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
{
case 0:
{
return 1;
}
break;
case 1:
{
return 2;
}
break;
case 2:
{
return -1;
}
break;
};
return 0;
}
void TextEdit::timerCrank()
{
if(featureAutoSave && edited1)
{
if(currentFileName.isEmpty())
{
currentFileName = QDir::homeDirPath()+"/textedit.tmp";
saveAs();
}
else
{
// odebug << "autosave" << oendl;
save();
}
setTimer();
}
}
void TextEdit::doTimer(bool b)
{
Config cfg("TextEdit");
cfg.setGroup ( "View" );
cfg.writeEntry ( "autosave", b);
featureAutoSave = b;
nAutoSave->setOn(b);
if(b)
{
// odebug << "doTimer true" << oendl;
setTimer();
}
// else
// odebug << "doTimer false" << oendl;
}
void TextEdit::setTimer()
{
if(featureAutoSave)
{
// odebug << "setting autosave" << oendl;
QTimer *timer = new QTimer(this );
connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
timer->start( 300000, true); //5 minutes
}
}
void TextEdit::gotoLine() {
if( editor->length() < 1)
return;
QWidget *d = QApplication::desktop();
gotoEdit = new QLineEdit( 0, "Goto line");
gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2));
gotoEdit->setFrame(true);
gotoEdit->show();
connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto()));
}
void TextEdit::doGoto() {
QString number = gotoEdit->text();
gotoEdit->hide();
if(gotoEdit) {
delete gotoEdit;
gotoEdit = 0;
}
bool ok;
int lineNumber = number.toInt(&ok, 10);
if( editor->numLines() < lineNumber)
QMessageBox::message(tr("Text Edit"),tr("Not enough lines"));
else
{
editor->setCursorPosition(lineNumber, 0, false);
}
}
diff --git a/core/pim/datebook/dateentry.ui b/core/pim/datebook/dateentry.ui
index f776911..6e4ada1 100644
--- a/core/pim/datebook/dateentry.ui
+++ b/core/pim/datebook/dateentry.ui
@@ -1,661 +1,913 @@
<!DOCTYPE UI><UI>
<class>DateEntryBase</class>
<comment>*********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
** $Id$
**
*********************************************************************</comment>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>DateEntryBase</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>242</width>
- <height>339</height>
+ <width>286</width>
+ <height>396</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>New Event</string>
</property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
<grid>
<property stdset="1">
<name>margin</name>
<number>2</number>
</property>
<property stdset="1">
<name>spacing</name>
- <number>0</number>
+ <number>2</number>
</property>
- <widget row="1" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel2</cstring>
- </property>
- <property stdset="1">
- <name>frameShape</name>
- <enum>MShape</enum>
- </property>
- <property stdset="1">
- <name>frameShadow</name>
- <enum>MShadow</enum>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Location</string>
- </property>
- </widget>
- <widget row="2" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel2_2</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Category</string>
- </property>
- <property>
- <name>buddy</name>
- <cstring>comboPriority</cstring>
- </property>
- </widget>
- <widget row="0" column="1" rowspan="1" colspan="3" >
- <class>QComboBox</class>
- <item>
- <property>
- <name>text</name>
- <string></string>
- </property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Meeting</string>
- </property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Lunch</string>
- </property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Dinner</string>
- </property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Travel</string>
- </property>
- </item>
- <property stdset="1">
- <name>name</name>
- <cstring>comboDescription</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>0</vsizetype>
- </sizepolicy>
- </property>
- <property stdset="1">
- <name>editable</name>
- <bool>true</bool>
- </property>
- <property stdset="1">
- <name>currentItem</name>
- <number>0</number>
- </property>
- <property stdset="1">
- <name>duplicatesEnabled</name>
- <bool>false</bool>
- </property>
- </widget>
<widget row="0" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel1</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Description </string>
- </property>
- </widget>
- <widget row="1" column="1" rowspan="1" colspan="3" >
- <class>QComboBox</class>
- <item>
- <property>
- <name>text</name>
- <string></string>
- </property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Office</string>
- </property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Home</string>
- </property>
- </item>
- <property stdset="1">
- <name>name</name>
- <cstring>comboLocation</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>0</vsizetype>
- </sizepolicy>
- </property>
- <property stdset="1">
- <name>editable</name>
- <bool>true</bool>
- </property>
- <property stdset="1">
- <name>currentItem</name>
- <number>0</number>
- </property>
- <property stdset="1">
- <name>duplicatesEnabled</name>
- <bool>false</bool>
- </property>
- </widget>
- <widget row="2" column="1" rowspan="1" colspan="3" >
- <class>CategorySelect</class>
- <property stdset="1">
- <name>name</name>
- <cstring>comboCategory</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>1</vsizetype>
- </sizepolicy>
- </property>
- </widget>
- <widget row="3" column="0" rowspan="2" colspan="1" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel3</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Start - End </string>
- </property>
- </widget>
- <widget row="3" column="1" >
- <class>QPushButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>buttonStart</cstring>
- </property>
- <property stdset="1">
- <name>minimumSize</name>
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property stdset="1">
- <name>maximumSize</name>
- <size>
- <width>70</width>
- <height>32767</height>
- </size>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Jan 02 00</string>
- </property>
- </widget>
- <widget row="4" column="1" >
- <class>QLineEdit</class>
- <property stdset="1">
- <name>name</name>
- <cstring>comboStart</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>0</vsizetype>
- </sizepolicy>
- </property>
- <property stdset="1">
- <name>minimumSize</name>
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property stdset="1">
- <name>maximumSize</name>
- <size>
- <width>70</width>
- <height>32767</height>
- </size>
- </property>
- <property stdset="1">
- <name>alignment</name>
- <set>AlignHCenter</set>
- </property>
- <property>
- <name>hAlign</name>
- </property>
- </widget>
- <spacer row="3" column="2" rowspan="2" colspan="1" >
- <property>
- <name>name</name>
- <cstring>Spacer1_2</cstring>
- </property>
- <property stdset="1">
- <name>orientation</name>
- <enum>Horizontal</enum>
- </property>
- <property stdset="1">
- <name>sizeType</name>
- <enum>Expanding</enum>
- </property>
- <property>
- <name>sizeHint</name>
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget row="5" column="1" rowspan="1" colspan="3" >
- <class>TimePicker</class>
- <property stdset="1">
- <name>name</name>
- <cstring>timePickerStart</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>1</vsizetype>
- </sizepolicy>
- </property>
- </widget>
- <widget row="3" column="3" >
- <class>QPushButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>buttonEnd</cstring>
- </property>
- <property stdset="1">
- <name>minimumSize</name>
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property stdset="1">
- <name>maximumSize</name>
- <size>
- <width>70</width>
- <height>32767</height>
- </size>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Jan 02 00</string>
- </property>
- </widget>
- <widget row="4" column="3" >
- <class>QLineEdit</class>
+ <class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
- <cstring>comboEnd</cstring>
+ <cstring>Layout19</cstring>
</property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>0</vsizetype>
- </sizepolicy>
- </property>
- <property stdset="1">
- <name>minimumSize</name>
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property stdset="1">
- <name>maximumSize</name>
- <size>
- <width>70</width>
- <height>32767</height>
- </size>
- </property>
- <property stdset="1">
- <name>alignment</name>
- <set>AlignHCenter</set>
- </property>
- <property>
- <name>hAlign</name>
- </property>
- </widget>
- <widget row="5" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TimePickerLabel</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Start time</string>
- </property>
- </widget>
- <widget row="6" column="0" >
- <class>QCheckBox</class>
- <property stdset="1">
- <name>name</name>
- <cstring>checkAllDay</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>All day</string>
- </property>
- </widget>
- <widget row="7" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel3_2_2</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Time zone</string>
- </property>
- </widget>
- <widget row="7" column="1" rowspan="1" colspan="3" >
- <class>TimeZoneSelector</class>
- <property stdset="1">
- <name>name</name>
- <cstring>timezone</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>1</vsizetype>
- </sizepolicy>
- </property>
- </widget>
- <widget row="8" column="0" >
- <class>QCheckBox</class>
- <property stdset="1">
- <name>name</name>
- <cstring>checkAlarm</cstring>
- </property>
- <property stdset="1">
- <name>enabled</name>
- <bool>true</bool>
- </property>
- <property stdset="1">
- <name>autoMask</name>
- <bool>false</bool>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>&amp;Alarm</string>
- </property>
- <property stdset="1">
- <name>checked</name>
- <bool>false</bool>
- </property>
- </widget>
- <widget row="8" column="1" rowspan="1" colspan="2" >
- <class>QSpinBox</class>
- <property stdset="1">
- <name>name</name>
- <cstring>spinAlarm</cstring>
- </property>
- <property stdset="1">
- <name>enabled</name>
- <bool>false</bool>
- </property>
- <property stdset="1">
- <name>suffix</name>
- <string> minutes</string>
- </property>
- <property stdset="1">
- <name>maxValue</name>
- <number>180</number>
- </property>
- <property stdset="1">
- <name>minValue</name>
- <number>0</number>
- </property>
- <property stdset="1">
- <name>lineStep</name>
- <number>5</number>
- </property>
- <property stdset="1">
- <name>value</name>
- <number>5</number>
- </property>
- </widget>
- <widget row="8" column="3" >
- <class>QComboBox</class>
- <item>
- <property>
- <name>text</name>
- <string>Silent</string>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
</property>
- </item>
- <item>
- <property>
- <name>text</name>
- <string>Loud</string>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
</property>
- </item>
- <property stdset="1">
- <name>name</name>
- <cstring>comboSound</cstring>
- </property>
- <property stdset="1">
- <name>enabled</name>
- <bool>false</bool>
- </property>
- </widget>
- <widget row="9" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>lblRepeat</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Repeat</string>
- </property>
- </widget>
- <widget row="9" column="1" rowspan="1" colspan="3" >
- <class>QToolButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>cmdRepeat</cstring>
- </property>
- <property stdset="1">
- <name>sizePolicy</name>
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>0</vsizetype>
- </sizepolicy>
- </property>
- <property stdset="1">
- <name>focusPolicy</name>
- <enum>TabFocus</enum>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>No Repeat...</string>
- </property>
- </widget>
- <widget row="10" column="0" rowspan="1" colspan="4" >
- <class>QToolButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>editNote</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Note...</string>
- </property>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout1</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Description </string>
+ </property>
+ </widget>
+ <widget>
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string></string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Meeting</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Lunch</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Dinner</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Travel</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>comboDescription</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>editable</name>
+ <bool>true</bool>
+ </property>
+ <property stdset="1">
+ <name>currentItem</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>duplicatesEnabled</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout2</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property stdset="1">
+ <name>frameShape</name>
+ <enum>MShape</enum>
+ </property>
+ <property stdset="1">
+ <name>frameShadow</name>
+ <enum>MShadow</enum>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Location</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string></string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Office</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Home</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>comboLocation</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>editable</name>
+ <bool>true</bool>
+ </property>
+ <property stdset="1">
+ <name>currentItem</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>duplicatesEnabled</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout3</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel2_2</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Category</string>
+ </property>
+ <property>
+ <name>buddy</name>
+ <cstring>comboPriority</cstring>
+ </property>
+ </widget>
+ <widget>
+ <class>CategorySelect</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>comboCategory</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>1</vsizetype>
+ </sizepolicy>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout18</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout17</cstring>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel3</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Start - End </string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout4</cstring>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>buttonStart</cstring>
+ </property>
+ <property stdset="1">
+ <name>minimumSize</name>
+ <size>
+ <width>70</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>maximumSize</name>
+ <size>
+ <width>70</width>
+ <height>32767</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Jan 02 00</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>comboStart</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>minimumSize</name>
+ <size>
+ <width>70</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>maximumSize</name>
+ <size>
+ <width>70</width>
+ <height>32767</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>alignment</name>
+ <set>AlignHCenter</set>
+ </property>
+ <property>
+ <name>hAlign</name>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer12</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Horizontal</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout5</cstring>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>buttonEnd</cstring>
+ </property>
+ <property stdset="1">
+ <name>minimumSize</name>
+ <size>
+ <width>70</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>maximumSize</name>
+ <size>
+ <width>70</width>
+ <height>32767</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Jan 02 00</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>comboEnd</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>minimumSize</name>
+ <size>
+ <width>70</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>maximumSize</name>
+ <size>
+ <width>70</width>
+ <height>32767</height>
+ </size>
+ </property>
+ <property stdset="1">
+ <name>alignment</name>
+ <set>AlignHCenter</set>
+ </property>
+ <property>
+ <name>hAlign</name>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout7</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TimePickerLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Start time</string>
+ </property>
+ </widget>
+ <widget>
+ <class>TimePicker</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>timePickerStart</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>1</vsizetype>
+ </sizepolicy>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QCheckBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>checkAllDay</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>All day</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout8</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel3_2_2</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Time zone</string>
+ </property>
+ </widget>
+ <widget>
+ <class>TimeZoneSelector</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>timezone</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>1</vsizetype>
+ </sizepolicy>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout9</cstring>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>1</number>
+ </property>
+ <widget>
+ <class>QCheckBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>checkAlarm</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>true</bool>
+ </property>
+ <property stdset="1">
+ <name>autoMask</name>
+ <bool>false</bool>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&amp;Alarm</string>
+ </property>
+ <property stdset="1">
+ <name>checked</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget>
+ <class>QSpinBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>spinAlarm</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>false</bool>
+ </property>
+ <property stdset="1">
+ <name>suffix</name>
+ <string></string>
+ </property>
+ <property stdset="1">
+ <name>maxValue</name>
+ <number>180</number>
+ </property>
+ <property stdset="1">
+ <name>minValue</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>lineStep</name>
+ <number>1</number>
+ </property>
+ <property stdset="1">
+ <name>value</name>
+ <number>5</number>
+ </property>
+ </widget>
+ <widget>
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>minutes</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>hours</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>days</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ComboInterval</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>false</bool>
+ </property>
+ <property stdset="1">
+ <name>currentItem</name>
+ <number>0</number>
+ </property>
+ </widget>
+ <widget>
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Silent</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Loud</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>comboSound</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout11</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>lblRepeat</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Repeat</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>cmdRepeat</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>TabFocus</enum>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>No Repeat...</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>editNote</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Note...</string>
+ </property>
+ </widget>
+ </vbox>
</widget>
</grid>
</widget>
<customwidgets>
<customwidget>
<class>TimeZoneSelector</class>
<header location="global">qpe/tzselect.h</header>
<sizehint>
<width>21</width>
<height>10</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>7</hordata>
<verdata>1</verdata>
</sizepolicy>
<pixmap>image0</pixmap>
</customwidget>
<customwidget>
<class>CategorySelect</class>
<header location="global">qpe/categoryselect.h</header>
<sizehint>
<width>-1</width>
<height>-1</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>7</hordata>
<verdata>1</verdata>
</sizepolicy>
<pixmap>image1</pixmap>
</customwidget>
<customwidget>
<class>TimePicker</class>
<header location="local">namespace_hack.h</header>
<sizehint>
<width>-1</width>
<height>-1</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>7</hordata>
<verdata>1</verdata>
</sizepolicy>
<pixmap>image1</pixmap>
</customwidget>
</customwidgets>
<images>
<image>
<name>image0</name>
<data format="XPM.GZ" length="45">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523250004143a55a6b2e0026630c4f</data>
</image>
<image>
<name>image1</name>
<data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
</image>
</images>
<connections>
<connection>
<sender>checkAlarm</sender>
<signal>toggled(bool)</signal>
<receiver>spinAlarm</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>comboEnd</sender>
<signal>textChanged(const QString&amp;)</signal>
<receiver>DateEntryBase</receiver>
<slot>endTimeChanged( const QString &amp; )</slot>
</connection>
<connection>
<sender>cmdRepeat</sender>
<signal>clicked()</signal>
<receiver>DateEntryBase</receiver>
<slot>slotRepeat()</slot>
</connection>
<connection>
<sender>comboStart</sender>
<signal>textChanged(const QString &amp;)</signal>
<receiver>DateEntryBase</receiver>
<slot>startTimeEdited( const QString &amp; )</slot>
</connection>
<connection>
<sender>checkAllDay</sender>
<signal>toggled(bool)</signal>
<receiver>comboEnd</receiver>
<slot>setDisabled(bool)</slot>
</connection>
<connection>
<sender>checkAllDay</sender>
<signal>toggled(bool)</signal>
<receiver>timePickerStart</receiver>
<slot>setDisabled(bool)</slot>
</connection>
<connection>
<sender>checkAlarm</sender>
<signal>toggled(bool)</signal>
<receiver>comboSound</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>checkAllDay</sender>
<signal>toggled(bool)</signal>
<receiver>comboStart</receiver>
<slot>setDisabled(bool)</slot>
</connection>
+ <connection>
+ <sender>checkAlarm</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>ComboInterval</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
<slot access="public">endDateChanged( const QString &amp; )</slot>
<slot access="public">endDateChanged( int, int, int )</slot>
<slot access="public">endTimeChanged( const QString &amp; )</slot>
<slot access="public">slotRepeat()</slot>
<slot access="public">slotWait( int )</slot>
<slot access="public">startDateChanged( const QString &amp; )</slot>
<slot access="public">startDateChanged(int, int, int)</slot>
<slot access="public">startTimeEdited( const QString &amp; )</slot>
<slot access="public">typeChanged( const QString &amp; )</slot>
<slot access="public">tzexecute(void)</slot>
</connections>
</UI>
diff --git a/inputmethods/dasher/opie-dasher-english.control b/inputmethods/dasher/opie-dasher-english.control
index 180f121..286b392 100644
--- a/inputmethods/dasher/opie-dasher-english.control
+++ b/inputmethods/dasher/opie-dasher-english.control
@@ -1,12 +1,12 @@
Package: opie-dasher-english
Files: share/dasher/training_english_GB.txt
Priority: optional
Section: opie/inputmethods
Maintainer: Matthew Garrett <mjg59@srcf.ucam.org>
Architecture: arm
Version: $QPE_VERSION$EXTRAVERSION
-Depends: opie-dasher
+Depends: opie-dasher libexpat0
Description: Dasher text input method
Dasher is a novel zooming text entry method that allows significantly faster
text entry than traditional methods. This package provides the necessary
data file to allow it to make predictions in English.
diff --git a/noncore/applets/volumeapplet2/volumeapplet.cpp b/noncore/applets/volumeapplet2/volumeapplet.cpp
index 2f61f48..2122007 100644
--- a/noncore/applets/volumeapplet2/volumeapplet.cpp
+++ b/noncore/applets/volumeapplet2/volumeapplet.cpp
@@ -1,175 +1,213 @@
/*
This file is part of the Opie Project
=. (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
.=l.
.>+-=
_;:, .> :=|. This program is free software; you can
.> <`_, > . <= redistribute it and/or modify it under
:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
.="- .-=="i, .._ License as published by the Free Software
- . .-<_> .<> Foundation; either version 2 of the License,
._= =} : or (at your option) any later version.
.%`+i> _;_.
.i_,=:_. -<s. This program is distributed in the hope that
+ . -:. = it will be useful, but WITHOUT ANY WARRANTY;
: .. .:, . . . without even the implied warranty of
=_ + =;=|` MERCHANTABILITY or FITNESS FOR A
_.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.= = ; Library General Public License for more
++= -. .` .: details.
: = ...= . :.=-
-. .:....=;==+<; You should have received a copy of the GNU
-_. . . )=. = Library General Public License along with
-- :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "volumeapplet.h"
/* OPIE */
#include <opie2/odebug.h>
#include <opie2/otaskbarapplet.h>
#include <opie2/osoundsystem.h>
#include <opie2/oledbox.h>
#include <opie2/oresource.h>
#include <qpe/applnk.h>
+#include <qpe/qpeapplication.h>
using namespace Opie::Core;
using namespace Opie::MM;
using namespace Opie::Ui;
/* QT */
#include <qpainter.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qslider.h>
/* STD */
#include <assert.h>
Channel::Channel( OMixerInterface* mixer, QWidget* parent, const char* name )
:QVBox( parent, name )
{
_name = new QLabel( name, this );
_name->setFont( QFont( "Vera", 8 ) );
_volume = new QSlider( 0, 100, 10, mixer->volume( name ) & 0xff, QSlider::Vertical, this );
_volume->setTickmarks( QSlider::Both );
_volume->setTickInterval( 20 );
_mute = new OLedBox( green, this );
_mute->setFocusPolicy( QWidget::NoFocus );
_mute->setFixedSize( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
_name->show();
_volume->show();
_mute->show();
}
Channel::~Channel()
{
}
VolumeAppletControl::VolumeAppletControl( OTaskbarApplet* parent, const char* name )
:QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), l(0)
{
setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
l = new QGridLayout( this );
build();
}
void VolumeAppletControl::build()
{
OSoundSystem* sound = OSoundSystem::instance();
OSoundSystem::CardIterator it = sound->iterator();
- OMixerInterface* mixer = new OMixerInterface( this, "/dev/mixer" );
+// OMixerInterface*
+ mixer = new OMixerInterface( this, "/dev/mixer" );
QStringList channels = mixer->allChannels();
int x = 0;
// int y = 0;
for ( QStringList::Iterator it = channels.begin(); it != channels.end(); ++it )
{
- odebug << "OSSDEMO: Mixer has channel " << *it << "" << oendl;
- odebug << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff )
+ if((*it) == mixer->volume( "Vol")) {
+ m_vol_percent=mixer->volume( *it ) >> 8;
+ }
+ owarn << "OSSDEMO: Mixer has channel " << *it << "" << oendl;
+ owarn << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff )
<< " (left) | " << ( mixer->volume( *it ) >> 8 ) << " (right)" << oendl;
l->addWidget( new Channel( mixer, this, *it ), 0, x++, AlignCenter );
}
}
VolumeAppletControl::~VolumeAppletControl()
{
}
+int VolumeAppletControl::volPercent ( ) const
+{
+ return m_vol_percent;
+}
+
+bool VolumeAppletControl::volMuted ( ) const
+{
+ return m_vol_muted;
+}
+
void VolumeAppletControl::showEvent( QShowEvent* e )
{
odebug << "showEvent" << oendl;
QWidget::showEvent( e );
}
void VolumeAppletControl::hideEvent( QHideEvent* e )
{
odebug << "hideEvent" << oendl;
QWidget::hideEvent( e );
}
-QSize VolumeAppletControl::sizeHint() const
-{
- return QSize( 200, 200 ); //QFrame::sizeHint();
+ QSize VolumeAppletControl::sizeHint() const
+ {
+ int wd = QPEApplication::desktop()->width();
+ return QSize( wd, 200 ); //QFrame::sizeHint();
}
VolumeApplet::VolumeApplet( QWidget *parent, const char *name )
:OTaskbarApplet( parent, name )
{
- setFixedHeight( AppLnk::smallIconSize() );
+ setFixedHeight( AppLnk::smallIconSize() +4);
setFixedWidth( AppLnk::smallIconSize() );
- _pixmap = Opie::Core::OResource::loadPixmap( "volume", Opie::Core::OResource::SmallIcon );
+ _pixmap = new QPixmap (Opie::Core::OResource::loadPixmap( "volume", Opie::Core::OResource::SmallIcon ));
_control = new VolumeAppletControl( this, "control" );
}
VolumeApplet::~VolumeApplet()
{
}
int VolumeApplet::position()
{
return 4;
}
void VolumeApplet::paintEvent( QPaintEvent* )
{
- QPainter p(this);
- p.drawPixmap(0, 2, _pixmap );
+ QPainter p ( this );
+
+ p. drawPixmap ( (width()- _pixmap->width())/2, QMAX( (height()-4-_pixmap->height() )/2, 1), *_pixmap );
+ p. setPen ( darkGray );
+ p. drawRect ( 1, height() - 4, width() - 2, 4 );
+
+ OMixerInterface* mixer = new OMixerInterface( this, "/dev/mixer" );
+
+ int volPercent = mixer->volume( "Vol" ) >> 8;
+
+ int pixelsWide = volPercent * ( width() - 4 ) / 100;
+ p. fillRect ( 2, height() - 3, pixelsWide, 2, red );
+ p. fillRect ( pixelsWide + 2, height() - 3, width() - 4 - pixelsWide, 2, lightGray );
+
+// if ( _control-> volMuted ( )) {
+// p. setPen ( red );
+// p. drawLine ( 1, 2, width() - 2, height() - 5 );
+// p. drawLine ( 1, 3, width() - 2, height() - 4 );
+// p. drawLine ( width() - 2, 2, 1, height() - 5 );
+// p. drawLine ( width() - 2, 3, 1, height() - 4 );
+// }
+
+// QPainter p(this);
+ // p.drawPixmap(0, 2, _pixmap );
}
void VolumeApplet::mousePressEvent( QMouseEvent* )
{
if ( !_control->isVisible() )
{
popup( _control );
}
else
{
_control->hide();
}
}
EXPORT_OPIE_APPLET_v1( VolumeApplet )
diff --git a/noncore/applets/volumeapplet2/volumeapplet.h b/noncore/applets/volumeapplet2/volumeapplet.h
index c1f1a3a..953c305 100644
--- a/noncore/applets/volumeapplet2/volumeapplet.h
+++ b/noncore/applets/volumeapplet2/volumeapplet.h
@@ -1,103 +1,112 @@
/*
                This file is part of the Opie Project
=. (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef VOLUMEAPPLET_H
#define VOLUMEAPPLET_H
#include <opie2/otaskbarapplet.h>
+#include <opie2/osoundsystem.h>
#include <qframe.h>
#include <qstring.h>
#include <qvbox.h>
#include <qpixmap.h>
+//using namespace Opie::MM;
namespace Opie
{
namespace Ui { class OLedBox; }
- namespace MM { class OMixerInterface; }
+// namespace MM { class OMixerInterface; }
}
class QLabel;
class QSlider;
class QShowEvent;
class QHideEvent;
class QGridLayout;
class Channel : public QVBox
{
public:
Channel( Opie::MM::OMixerInterface* mixer, QWidget* parent, const char* name );
virtual ~Channel();
// public slots:
// virtual void clicked();
private:
QLabel* _name;
QSlider* _volume;
Opie::Ui::OLedBox* _mute;
Opie::MM::OMixerInterface* _mixer;
};
class VolumeAppletControl : public QFrame
{
public:
VolumeAppletControl( Opie::Ui::OTaskbarApplet* parent, const char* name = 0 );
~VolumeAppletControl();
+ bool volMuted() const;
+ int volPercent() const;
+
+ int m_vol_percent;
+ bool m_vol_muted;
+
+ Opie::MM::OMixerInterface* mixer;
virtual QSize sizeHint() const;
protected:
virtual void showEvent( QShowEvent* );
virtual void hideEvent( QHideEvent* );
void build();
private:
+
QGridLayout* l;
-
};
class VolumeApplet : public Opie::Ui::OTaskbarApplet
{
public:
VolumeApplet( QWidget* parent = 0, const char* name = 0 );
~VolumeApplet();
static int position();
protected:
virtual void paintEvent( QPaintEvent* );
virtual void mousePressEvent( QMouseEvent* );
private:
VolumeAppletControl* _control;
- QPixmap _pixmap;
+ QPixmap* _pixmap;
};
#endif
diff --git a/noncore/apps/advancedfm/advancedfmData.cpp b/noncore/apps/advancedfm/advancedfmData.cpp
index feda198..95e619b 100644
--- a/noncore/apps/advancedfm/advancedfmData.cpp
+++ b/noncore/apps/advancedfm/advancedfmData.cpp
@@ -1,277 +1,282 @@
/***************************************************************************
advancedfmData.cpp
-------------------
** Created: Mon 09-23-2002 13:24:11
copyright : (C) 2002 by ljp
email : ljp@llornkcor.com
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "advancedfm.h"
/* OPIE */
#include <opie2/odebug.h>
#include <opie2/oresource.h>
#include <qpe/applnk.h>
#include <qpe/storage.h>
#include <qpe/qpeapplication.h>
#include <qpe/menubutton.h>
using namespace Opie::Core;
using namespace Opie::Ui;
/* QT */
+#include <qframe.h>
#include <qlayout.h>
#include <qhbox.h>
#include <qmenubar.h>
#include <qcombobox.h>
#include <qtoolbutton.h>
#include <qlineedit.h>
#include <qlistview.h>
/* STD */
#include <sys/utsname.h>
void AdvancedFm::init() {
b = false;
setCaption( tr( "AdvancedFm" ) );
- QVBoxLayout *layout = new QVBoxLayout( this );
+// QFrame* frame = new QFrame(this);
+// setCentralWidget(frame);
+// QVBoxLayout *layout = new QVBoxLayout( frame );
+
+ QVBoxLayout *layout = new QVBoxLayout( this);
layout->setSpacing( 2);
layout->setMargin( 0); // squeeze
QMenuBar *menuBar = new QMenuBar(this);
menuBar->setMargin( 0 ); // squeeze
fileMenu = new QPopupMenu( this );
viewMenu = new QPopupMenu( this );
// customDirMenu = new QPopupMenu( this );
layout->addWidget( menuBar );
menuBar->insertItem( tr( "File" ), fileMenu);
menuBar->insertItem( tr( "View" ), viewMenu);
bool useBigIcon = qApp->desktop()->size().width() > 330;
cdUpButton = new QToolButton( 0,"cdUpButton");
cdUpButton->setUsesBigPixmap( useBigIcon );
cdUpButton->setPixmap( Opie::Core::OResource::loadPixmap( "up", Opie::Core::OResource::SmallIcon ) );
cdUpButton->setAutoRaise( true );
menuBar->insertItem( cdUpButton );
qpeDirButton= new QToolButton( 0,"QPEButton");
qpeDirButton->setUsesBigPixmap( useBigIcon );
qpeDirButton->setPixmap( Opie::Core::OResource::loadPixmap( "logo/opielogo", Opie::Core::OResource::SmallIcon ) );
qpeDirButton->setAutoRaise( true );
menuBar->insertItem( qpeDirButton );
cfButton = new QToolButton( 0, "CFButton");
cfButton->setUsesBigPixmap( useBigIcon );
cfButton->setPixmap( Opie::Core::OResource::loadPixmap( "pcmcia", Opie::Core::OResource::SmallIcon ) );
cfButton->setAutoRaise( true );
menuBar->insertItem( cfButton );
sdButton = new QToolButton( 0, "SDButton");
sdButton->setUsesBigPixmap( useBigIcon );
sdButton->setPixmap( Opie::Core::OResource::loadPixmap( "advancedfm/sdcard", Opie::Core::OResource::SmallIcon ) );
sdButton->setAutoRaise( true );
menuBar->insertItem( sdButton );
docButton = new QToolButton( 0,"docsButton");
docButton->setUsesBigPixmap( useBigIcon );
docButton->setPixmap( Opie::Core::OResource::loadPixmap( "DocsIcon", Opie::Core::OResource::SmallIcon ) );
docButton->setAutoRaise( true );
menuBar->insertItem( docButton );
homeButton = new QToolButton( 0, "homeButton");
homeButton->setUsesBigPixmap( useBigIcon );
homeButton->setPixmap( Opie::Core::OResource::loadPixmap( "home", Opie::Core::OResource::SmallIcon ) );
homeButton->setAutoRaise( true );
menuBar->insertItem( homeButton );
fileMenu->insertItem( tr( "Show Hidden Files" ), this, SLOT( showMenuHidden() ));
fileMenu->setItemChecked( fileMenu->idAt(0),TRUE);
fileMenu->insertSeparator();
fileMenu->insertItem( tr( "File Search" ), this, SLOT( openSearch() ));
fileMenu->insertSeparator();
fileMenu->insertItem( tr( "Make Directory" ), this, SLOT( mkDir() ));
fileMenu->insertItem( tr( "Rename" ), this, SLOT( rn() ));
fileMenu->insertItem( tr( "Run Command" ), this, SLOT( runCommandStd() ));
fileMenu->insertItem( tr( "Run Command with Output" ), this, SLOT( runCommand() ));
fileMenu->insertSeparator();
fileMenu->insertItem( tr( "Make Symlink" ), this, SLOT( mkSym() ));
fileMenu->insertItem( tr( "Select All" ), this, SLOT( selectAll() ));
fileMenu->insertItem( tr( "Add To Documents" ), this, SLOT( addToDocs() ));
fileMenu->insertItem( tr( "Delete" ), this, SLOT( del() ));
fileMenu->setCheckable(TRUE);
viewMenu->insertItem( tr( "Switch to View 1" ), this, SLOT( switchToLocalTab()));
viewMenu->insertItem( tr( "Switch to View 2" ), this, SLOT( switchToRemoteTab()));
viewMenu->insertItem( tr( "Refresh" ), this, SLOT( refreshCurrentTab()));
// viewMenu->insertSeparator();
// viewMenu->insertItem( tr( "About" ), this, SLOT( doAbout() ));
viewMenu->setCheckable(true);
viewMenu->setItemChecked( viewMenu->idAt(0), true);
viewMenu->setItemChecked( viewMenu->idAt(1), false);
s_addBookmark = tr("Bookmark Directory");
s_removeBookmark = tr("Remove Current Directory from Bookmarks");
// menuButton->insertItem("");
// customDirMenu->insertItem(tr("Add This Directory"));
// customDirMenu->insertItem(tr("Remove This Directory"));
// customDirMenu->insertSeparator();
QHBoxLayout *CBHB = new QHBoxLayout(); // parent layout will be set later
CBHB->setMargin( 0 );
CBHB->setSpacing( 1 );
menuButton = new MenuButton( this );
menuButton->setUseLabel(false);
menuButton->setMaximumWidth( 20 );
menuButton->insertItem( s_addBookmark);
menuButton->insertItem( s_removeBookmark);
menuButton->insertSeparator();
// menuButton->setFocusPolicy(NoFocus);
CBHB->addWidget( menuButton );
customDirsToMenu();
currentPathCombo = new QComboBox( FALSE, this, "currentPathCombo" );
currentPathCombo->setEditable(TRUE);
currentPathCombo->lineEdit()->setText( currentDir.canonicalPath());
// currentPathCombo->setFocusPolicy(NoFocus);
CBHB->addWidget( currentPathCombo );
layout->addLayout( CBHB );
TabWidget = new OSplitter( Horizontal, this, "TabWidget" );
// TabWidget = new QTabWidget( this, "TabWidget" );
layout->addWidget( TabWidget, 4 );
tab = new QWidget( TabWidget, "tab" );
tabLayout = new QGridLayout( tab );
tabLayout->setSpacing( 2);
tabLayout->setMargin( 2);
Local_View = new QListView( tab, "Local_View" );
Local_View->addColumn( tr("File"),130);
Local_View->addColumn( tr("Size"),-1);
Local_View->setColumnAlignment(1,QListView::AlignRight);
Local_View->addColumn( tr("Date"),-1);
Local_View->setColumnAlignment(2,QListView::AlignRight);
Local_View->setAllColumnsShowFocus(TRUE);
Local_View->setMultiSelection( TRUE );
Local_View->setSelectionMode(QListView::Extended);
Local_View->setFocusPolicy(StrongFocus);
Local_View->installEventFilter( this );
QPEApplication::setStylusOperation( Local_View->viewport() , QPEApplication::RightOnHold);
tabLayout->addWidget( Local_View, 0, 0 );
TabWidget->addWidget( tab,"advancedfm/smFileBrowser.png", tr("1"));
// TabWidget->insertTab( tab, tr("1"));
tab_2 = new QWidget( TabWidget, "tab_2" );
tabLayout_2 = new QGridLayout( tab_2 );
tabLayout_2->setSpacing( 2);
tabLayout_2->setMargin( 2);
Remote_View = new QListView( tab_2, "Remote_View" );
Remote_View->addColumn( tr("File"),130);
Remote_View->addColumn( tr("Size"),-1);
Remote_View->setColumnAlignment(1,QListView::AlignRight);
Remote_View->addColumn( tr("Date"),-1);
Remote_View->setColumnAlignment(2,QListView::AlignRight);
Remote_View->setAllColumnsShowFocus(TRUE);
Remote_View->setMultiSelection( TRUE );
Remote_View->setSelectionMode(QListView::Extended);
Remote_View->setFocusPolicy(StrongFocus);
Remote_View->installEventFilter( this );
QPEApplication::setStylusOperation( Remote_View->viewport(), QPEApplication::RightOnHold);
tabLayout_2->addWidget( Remote_View, 0, 0 );
TabWidget->addWidget( tab_2, "advancedfm/smFileBrowser.png",tr( "2"));
TabWidget->setSizeChange( 370 );
// TabWidget->insertTab( tab_2, tr( "2"));
/* tab_3 = new QWidget( TabWidget, "tab_3" );
tabLayout_3 = new QGridLayout( tab_3 );
tabLayout_3->setSpacing( 2);
tabLayout_3->setMargin( 2);
// OFileDialog fileDialog;
// fileDialog;
// fileSelector = new FileSelector( "*",tab_3, "fileselector" , FALSE, FALSE); //buggy
// fileDialog = new OFileDialog("bangalow", tab_3, 4, 2, "Bungalow");
// OFileSelector fileDialog = new OFileSelector( tab_3, 4, 2,"/");
QListView *fileTree;
fileTree = new QListView( tab_3, "tree" );
tabLayout_3->addMultiCellWidget( fileTree, 0, 0, 0, 3 );
TabWidget->insertTab( tab_3, tr( "Remote" ) );
*/
///////////////
if( !StorageInfo::hasSd() || !StorageInfo::hasMmc()) {
sdButton->hide();
}
if( !StorageInfo::hasCf() ) {
cfButton->hide();
}
currentDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
currentDir.setPath( QDir::currentDirPath());
currentRemoteDir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
currentRemoteDir.setPath( QDir::currentDirPath());
filterStr="*";
showMenuHidden();
TabWidget->setCurrentWidget(0);
}
void AdvancedFm::initConnections()
{
connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(cleanUp()));
connect(qpeDirButton,SIGNAL(released()),this,SLOT(QPEButtonPushed()));
connect(cfButton,SIGNAL(released()),this,SLOT(CFButtonPushed()));
connect(sdButton,SIGNAL(released()),this,SLOT(SDButtonPushed()));
connect(cdUpButton,SIGNAL(released()),this,SLOT(upDir()));
connect(docButton,SIGNAL(released()),this,SLOT(docButtonPushed()));
connect(homeButton,SIGNAL(released()),this,SLOT(homeButtonPushed()));
connect(currentPathCombo,SIGNAL(activated(const QString&)),this,SLOT(changeTo(const QString&)));
connect(currentPathCombo->lineEdit(),SIGNAL(returnPressed()),this,SLOT(currentPathComboChanged()));
connect(Local_View,SIGNAL(clicked(QListViewItem*)),this,SLOT( ListClicked(QListViewItem*)));
connect(Local_View,SIGNAL(mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),this,SLOT( ListPressed(int,QListViewItem*,const QPoint&,int)) );
connect(Remote_View,SIGNAL(clicked(QListViewItem*)),this,SLOT(ListClicked(QListViewItem*)));
connect(Remote_View,SIGNAL(mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),this,SLOT(ListPressed(int,QListViewItem*,const QPoint&,int)));
connect(TabWidget,SIGNAL(currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*)));
connect(Remote_View,SIGNAL(rightButtonPressed(QListViewItem*,const QPoint&,int)),this,SLOT(showFileMenu()));
connect(Local_View,SIGNAL(rightButtonPressed(QListViewItem*,const QPoint&,int)),this,SLOT(showFileMenu()));
connect(menuButton,SIGNAL(selected(const QString&)),SLOT(gotoCustomDir(const QString&)));
// connect( menuButton, SIGNAL( selected(int)), SLOT( dirMenuSelected(int)));
connect(viewMenu,SIGNAL(activated(int)),this,SLOT(slotSwitchMenu(int)));
// connect( customDirMenu, SIGNAL( activated(int)), this, SLOT( dirMenuSelected(int)));
}
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp
index 80324eb..ed280aa 100644
--- a/noncore/apps/advancedfm/advancedfmMenu.cpp
+++ b/noncore/apps/advancedfm/advancedfmMenu.cpp
@@ -1,874 +1,888 @@
/***************************************************************************
AdvancedFm.cpp
-------------------
** Created: Sat Mar 9 23:33:09 2002
copyright : (C) 2002 by ljp
email : ljp@llornkcor.com
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "advancedfm.h"
#include "output.h"
#include "filePermissions.h"
/* OPIE */
#include <opie2/odebug.h>
#include <qpe/lnkproperties.h>
#include <qpe/qpeapplication.h>
#include <qpe/applnk.h>
using namespace Opie::Core;
/* QT*/
#include <qmessagebox.h>
#include <qpopupmenu.h>
#include <qlistview.h>
/* STD */
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <dirent.h>
#include <sys/sendfile.h>
#include <fcntl.h>
void AdvancedFm::doDirChange() {
QString pathItem = CurrentView()->currentItem()->text(0);
if( pathItem == "../") {
ListClicked( CurrentView()->currentItem());
} else {
if( pathItem.find(" -> ",0,TRUE) != -1)
pathItem = dealWithSymName((const QString&)pathItem)+"/";
// owarn << pathItem << oendl;
changeTo( CurrentDir()->path()+"/"+pathItem.left( pathItem.length() - 1) );
}
}
void AdvancedFm::showMenuHidden() {
if (b) {
CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
fileMenu->setItemChecked( fileMenu->idAt(0),TRUE);
} else {
CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
fileMenu->setItemChecked( fileMenu->idAt(0),FALSE);
}
b = !b;
populateView();
}
void AdvancedFm::showHidden() {
if (b) {
CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All);
} else {
CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All);
}
populateView();
}
QString AdvancedFm::dealWithSymName(const QString &fileName) {
QString strItem = fileName;
return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4);
}
void AdvancedFm::runThis() {
if( !CurrentView()->currentItem()) return;
QString fs;
QDir *thisDir = CurrentDir();
QString curFile = CurrentView()->currentItem()->text(0);
QString path = thisDir->canonicalPath();
if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
curFile = dealWithSymName((const QString&)curFile);
if(curFile != "../") {
fs = getFileSystemType((const QString &) path);
QFileInfo fileInfo( path + "/" + curFile);
// odebug << fileInfo.owner() << oendl;
if( (fileInfo.permission( QFileInfo::ExeUser)
| fileInfo.permission( QFileInfo::ExeGroup)
| fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) {
| fs == "vfat" && fileInfo.filePath().contains("/bin") ) {
QCopEnvelope e("QPE/System", "execute(QString)" );
e << curFile;
} else {
curFile = path + "/" + curFile;
DocLnk nf(curFile);
QString execStr = nf.exec();
// odebug << execStr << oendl;
if( execStr.isEmpty() ) {
} else {
nf.execute();
}
}
}
}
void AdvancedFm::runText() {
if( !CurrentView()->currentItem()) return;
QString curFile = CurrentView()->currentItem()->text(0);
if(curFile != "../") {
if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink
curFile = dealWithSymName((const QString&)curFile);
curFile = CurrentDir()->canonicalPath()+"/"+curFile;
QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" );
e << curFile;
}
}
void AdvancedFm::makeDir() {
InputDialog *fileDlg;
fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0);
fileDlg->exec();
if( fileDlg->result() == 1 ) {
QDir *thisDir = CurrentDir();
QString filename = fileDlg->LineEdit1->text();
thisDir->mkdir( thisDir->canonicalPath()+"/"+filename);
}
populateView();
}
void AdvancedFm::doDelete() {
QStringList curFileList = getPath();
bool doMsg=true;
int count = curFileList.count();
if( count > 0) {
if(count > 1 ) {
QString msg;
msg=tr("<p>Really delete %1 files?</p>").arg(count);
switch ( QMessageBox::warning(this,tr("Delete"),msg
,tr("Yes"),tr("No"),0,0,1) )
{
case 0:
doMsg=false;
break;
case 1:
return;
break;
default:
return;
break;
};
}
QString myFile;
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
myFile = (*it);
if( myFile.find(" -> ",0,TRUE) != -1)
myFile = myFile.left( myFile.find(" -> ",0,TRUE));
QString f = CurrentDir()->canonicalPath();
if(f.right(1).find("/",0,TRUE) == -1)
f += "/";
f += myFile;
if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) {
//if file is a directory
switch ( QMessageBox::warning( this, tr("Delete Directory?"),
tr("<p>Really delete %1 and all it's contents?</p>" ).arg( f ) ,
tr("Yes"), tr("No"), 0, 0, 1) ) {
case 0:
{
f=f.left(f.length()-1);
QString cmd="rm -rf "+f;
startProcess( (const QString)cmd.latin1() );
populateView();
}
break;
case 1:
// exit
break;
default:
break;
};
} else {
if(doMsg) {
switch ( QMessageBox::warning(this,tr("Delete"),
tr("<p>Really delete %1?</p>").arg( myFile ),
tr("Yes"), tr("No"), 0, 0, 1) ) {
case 0:
break;
case 1:
return;
break;
default:
return;
break;
};
}
QString cmd="rm "+f;
QFile file(f);
QFileInfo fi(myFile);
if( fi.fileName().find("../",0,TRUE)==-1) {
// odebug << "remove link files "+myFile << oendl;
// DocLnk lnk(f);
DocLnk *lnk;
lnk = new DocLnk(f);
// odebug << "Deleting doclnk " + lnk->linkFile() << oendl;
if(lnk->isValid())
lnk->removeLinkFile();
// delete lnk;
file.remove();
}
}
}
}
populateView();
}
void AdvancedFm::filePerms() {
QStringList curFileList = getPath();
QString filePath;
filePath = CurrentDir()->canonicalPath()+"/";
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
filePermissions *filePerm;
filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it));
QPEApplication::execDialog( filePerm );
if( filePerm )
delete filePerm;
}
populateView();
}
void AdvancedFm::doProperties() {
#if defined(QT_QWS_OPIE)
QStringList curFileList = getPath();
QString filePath;
filePath = CurrentDir()->canonicalPath()+"/";
// odebug << "" << curFileList.count() << "" << oendl;
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
// odebug << (filePath+*it) << oendl;
DocLnk lnk( (filePath+*it));
LnkProperties prop( &lnk );
QPEApplication::execDialog( &prop );
}
#endif
}
void AdvancedFm::upDir() {
QDir dir( CurrentDir()->canonicalPath());
dir.cdUp();
changeTo(dir.canonicalPath());
}
void AdvancedFm::copyTimer() {
QTimer::singleShot(125,this,SLOT(copy()));
}
void AdvancedFm::copy() {
QStringList curFileList = getPath();
QDir *thisDir = CurrentDir();
QDir *thatDir = OtherDir();
bool doMsg = true;
int count = curFileList.count();
if( count > 0) {
if(count > 1 ){
QString msg;
msg=tr("<p>Really copy %1 files?</p>").arg(count);
switch ( QMessageBox::warning(this,tr("Copy"),msg
,tr("Yes"),tr("No"),0,0,1) )
{
case 0:
doMsg=false;
break;
case 1:
return;
break;
default:
return;
break;
};
}
QString curFile, item, destFile;
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
item=(*it);
if(item.find("->",0,TRUE)) //symlink
item = item.left(item.find("->",0,TRUE));
curFile = thisDir->canonicalPath()+"/"+ item;
destFile = thatDir->canonicalPath()+"/"+ item;
// odebug << "Destination file is "+destFile << oendl;
// odebug << "CurrentFile file is " + curFile << oendl;
QFile f(destFile);
if( f.exists()) {
if(doMsg) {
switch ( QMessageBox::warning(this,tr("File Exists!"),
tr("<p>%1 already exists. Ok to overwrite?</P>").arg(item),
tr("Yes"),tr("No"),0,0,1)) {
case 0:
break;
case 1:
return;
break;
default:
return;
break;
};
}
f.remove();
}
if( !copyFile( curFile, destFile) ) {
QMessageBox::message("AdvancedFm",
tr( "<P>Could not copy %1 to %2</P>").arg(curFile).arg(destFile));
return;
}
}
rePopulate();
}
}
void AdvancedFm::copyAsTimer() {
QTimer::singleShot(125,this,SLOT(copyAs()));
}
void AdvancedFm::copyAs() {
QStringList curFileList = getPath();
QString curFile, item;
InputDialog *fileDlg;
QDir *thisDir = CurrentDir();
QDir *thatDir = OtherDir();
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
QString destFile;
item=(*it);
curFile = thisDir->canonicalPath()+"/"+(*it);
fileDlg = new InputDialog( this, tr("Copy %1 As").arg(curFile), TRUE, 0);
fileDlg->setInputText((const QString &) destFile );
fileDlg->exec();
if( fileDlg->result() == 1 ) {
QString filename = fileDlg->LineEdit1->text();
destFile = thatDir->canonicalPath()+"/"+filename;
QFile f( destFile);
if( f.exists()) {
switch (QMessageBox::warning(this,tr("File Exists!"),
tr("<P> %1 already exists. Ok to overwrite?</p>").arg(item),
tr("Yes"),tr("No"),0,0,1) ) {
case 0:
f.remove();
break;
case 1:
return;
break;
default:
return;
break;
};
}
if( !copyFile( curFile, destFile) ) {
QMessageBox::message("AdvancedFm",tr("<p>Could not copy %1 to %2</P>").arg(curFile).arg(destFile));
return;
}
}
delete fileDlg;
}
rePopulate();
// setOtherTabCurrent();
qApp->processEvents();
}
void AdvancedFm::copySameDirTimer() {
QTimer::singleShot(125,this,SLOT(copySameDir()));
}
void AdvancedFm::copySameDir() {
qApp->processEvents();
QStringList curFileList = getPath();
QString curFile, item, destFile;
InputDialog *fileDlg;
QDir *thisDir = CurrentDir();
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
item=(*it);
curFile = thisDir->canonicalPath()+"/"+ item;
fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0);
fileDlg->setInputText((const QString &) destFile );
fileDlg->exec();
if( fileDlg->result() == 1 ) {
QString filename = fileDlg->LineEdit1->text();
destFile = thisDir->canonicalPath()+"/"+filename;
QFile f(destFile);
if( f.exists()) {
switch (QMessageBox::warning(this,tr("Delete"),
tr("<p> %1 already exists. Do you really want to delete it?</P>").arg(destFile),
tr("Yes"),tr("No"),0,0,1) ) {
case 0:
f.remove();
break;
case 1:
return;
break;
default:
return;
break;
};
}
if(!copyFile( curFile,destFile) ) {
QMessageBox::message("AdvancedFm",tr("<P>Could not copy %1 to %2</P>").arg(curFile).arg(destFile));
return;
}
// odebug << "copy "+curFile+" as "+destFile << oendl;
}
delete fileDlg;
}
rePopulate();
}
void AdvancedFm::moveTimer() {
QTimer::singleShot(125,this,SLOT(move()));
}
void AdvancedFm::move() {
QStringList curFileList = getPath();
if( curFileList.count() > 0) {
QString curFile, destFile, item;
QDir *thisDir = CurrentDir();
QDir *thatDir = OtherDir();
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
item=(*it);
QString destFile = thatDir->canonicalPath();
if(destFile.right(1).find("/",0,TRUE) == -1)
destFile+="/";
destFile += item;
// odebug << "Destination file is "+destFile << oendl;
curFile = thisDir->canonicalPath();
if(curFile.right(1).find("/",0,TRUE) == -1)
curFile +="/";
curFile+= item;
// odebug << "CurrentFile file is " + curFile << oendl;
if(QFileInfo(curFile).isDir()) {
moveDirectory( curFile, destFile );
rePopulate();
return;
}
QFile f( destFile);
if( f.exists()) {
switch ( QMessageBox::warning(this,tr("File Exists!"),
tr("<p>%1 already exists. Ok to overwrite?</P>").arg(destFile),
tr("Yes"),tr("No"),0,0,1)) {
case 0:
break;
case 1:
return;
break;
default:
return;
break;
};
}
if( !copyFile( curFile, destFile) ) {
QMessageBox::message(tr("Note"),tr("<p>Could not move %1</p>").arg(curFile));
return;
} else
QFile::remove(curFile);
}
}
rePopulate();
// setOtherTabCurrent();
}
bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) {
int err = 0;
if( copyDirectory( src, dest ) ) {
QString cmd = "rm -rf " + src;
err = system((const char*)cmd);
} else
err = -1;
if(err!=0) {
QMessageBox::message(tr("Note"),tr("<p>Could not move %1</p>").arg( src));
return false;
}
return true;
}
bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) {
QString cmd = "/bin/cp -fpR " + src + " " + dest;
owarn << cmd << oendl;
int err = system( (const char *) cmd );
if ( err != 0 ) {
QMessageBox::message("AdvancedFm", tr( "<p>Could not copy %1 to %2</p>").arg( src ).arg( dest ) );
return false;
}
return true;
}
bool AdvancedFm::copyFile( const QString & src, const QString & dest ) {
if(QFileInfo(src).isDir()) {
if( copyDirectory( src, dest )) {
// setOtherTabCurrent();
rePopulate();
return true;
}
else
return false;
}
bool success = true;
struct stat status;
QFile srcFile(src);
QFile destFile(dest);
int err=0;
int read_fd=0;
int write_fd=0;
struct stat stat_buf;
off_t offset = 0;
if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
// owarn << "open failed" << oendl;
return success = false;
}
read_fd = srcFile.handle();
if(read_fd != -1) {
fstat (read_fd, &stat_buf);
if( !destFile.open( IO_WriteOnly|IO_Raw ) ) {
// owarn << "destfile open failed" << oendl;
return success = false;
}
write_fd = destFile.handle();
if(write_fd != -1) {
err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
if( err == -1) {
QString msg;
switch(err) {
case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. ";
case EINVAL: msg = "Descriptor is not valid or locked. ";
case ENOMEM: msg = "Insufficient memory to read from in_fd.";
case EIO: msg = "Unspecified error while reading from in_fd.";
};
success = false;
// owarn << msg << oendl;
}
} else {
success = false;
}
} else {
success = false;
}
srcFile.close();
destFile.close();
// Set file permissions
if( stat( QFile::encodeName(src), &status ) == 0 ) {
chmod( QFile::encodeName(dest), status.st_mode );
}
return success;
}
void AdvancedFm::runCommand() {
if( !CurrentView()->currentItem()) return;
QDir *thisDir = CurrentDir();
QString curFile;
curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0);
InputDialog *fileDlg;
fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0);
fileDlg->setInputText(curFile);
fileDlg->exec();
//QString command;
if( fileDlg->result() == 1 ) {
// odebug << fileDlg->LineEdit1->text() << oendl;
QStringList command;
command << "/bin/sh";
command << "-c";
command << fileDlg->LineEdit1->text();
Output *outDlg;
outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
QPEApplication::execDialog( outDlg );
qApp->processEvents();
}
}
void AdvancedFm::runCommandStd() {
if( !CurrentView()->currentItem()) return;
QString curFile;
QDir *thisDir = CurrentDir();
QListView *thisView = CurrentView();
if( thisView->currentItem())
curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0);
InputDialog *fileDlg;
fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0);
fileDlg->setInputText(curFile);
fileDlg->exec();
if( fileDlg->result() == 1 ) {
qApp->processEvents();
startProcess( (const QString)fileDlg->LineEdit1->text().latin1());
}
}
void AdvancedFm::fileStatus() {
- if( !CurrentView()->currentItem()) return;
- QString curFile;
- curFile = CurrentView()->currentItem()->text(0);
-
- QStringList command;
- command << "/bin/sh";
- command << "-c";
- command << "stat -l "+ curFile;
+ if( !CurrentView()->currentItem()) return;
+ QString curFile;
+ curFile = CurrentView()->currentItem()->text(0);
+ if(QFileInfo("/usr/bin/stat").exists()) {
+ QStringList command;
+ command << "/bin/sh";
+ command << "-c";
+ command << "stat -l "+ curFile;
+ Output *outDlg;
+ outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
+ QPEApplication::execDialog( outDlg );
+ } else {
+/* struct stat buf;
+ stat( curFile.local8bit(), &buf);
+
+ st_dev dev;
+ st_uid uid;
+ st_gid gid;
+ st_size size;
+ st_atime atime;
+ st_mtime mtime;
+ st_ctime ctime;
+ st_mode mode;
+*/
+ }
- Output *outDlg;
- outDlg = new Output( command, this, tr("AdvancedFm Output"), true);
- QPEApplication::execDialog( outDlg );
- qApp->processEvents();
+ qApp->processEvents();
}
void AdvancedFm::mkDir() {
makeDir();
}
void AdvancedFm::rn() {
renameIt();
}
void AdvancedFm::del() {
doDelete();
}
void AdvancedFm::mkSym() {
QString cmd;
QStringList curFileList = getPath();
if( curFileList.count() > 0) {
QDir *thisDir = CurrentDir();
QDir * thatDir = OtherDir();
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
QString destName = thatDir->canonicalPath()+"/"+(*it);
if(destName.right(1) == "/") {
destName = destName.left( destName.length() -1);
}
QString curFile = thisDir->canonicalPath()+"/"+(*it);
if( curFile.right(1) == "/") {
curFile = curFile.left( curFile.length() -1);
}
cmd = "ln -s "+curFile+" "+destName;
// odebug << cmd << oendl;
startProcess( (const QString)cmd );
}
rePopulate();
setOtherTabCurrent();
}
}
void AdvancedFm::doBeam() {
Ir ir;
if(!ir.supported()) {
} else {
QStringList curFileList = getPath();
if( curFileList.count() > 0) {
for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) {
QString curFile = (*it);
QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile;
if( curFilePath.right(1) == "/") {
curFilePath = curFilePath.left( curFilePath.length() -1);
}
Ir *file = new Ir(this, "IR");
connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished(Ir*)));
file->send( curFilePath, curFile );
}
}
}
}
void AdvancedFm::fileBeamFinished( Ir *) {
QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") );
}
void AdvancedFm::selectAll() {
QListView *thisView = CurrentView();
thisView->selectAll(true);
thisView->setSelected( thisView->firstChild(),false);
}
void AdvancedFm::startProcess(const QString & cmd) {
QStringList command;
OProcess *process;
process = new OProcess();
connect(process,SIGNAL(processExited(Opie::Core::OProcess*)),this,SLOT(processEnded(Opie::Core::OProcess*)));
connect(process,SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),this,SLOT(oprocessStderr(Opie::Core::OProcess*,char*,int)));
command << "/bin/sh";
command << "-c";
command << cmd.latin1();
*process << command;
if(!process->start(OProcess::NotifyOnExit, OProcess::All) )
odebug << "could not start process" << oendl;
}
void AdvancedFm::processEnded(OProcess *) {
rePopulate();
}
void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int ) {
// owarn << "received stderrt " << buflen << " bytes" << oendl;
QString lineStr = buffer;
QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") );
}
bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) {
if ( o->inherits( "QLineEdit" ) ) {
if ( e->type() == QEvent::KeyPress ) {
QKeyEvent *ke = (QKeyEvent*)e;
if ( ke->key() == Key_Return ||
ke->key() == Key_Enter ) {
okRename();
return true;
}
else if ( ke->key() == Key_Escape ) {
cancelRename();
return true;
}
}
else if ( e->type() == QEvent::FocusOut ) {
cancelRename();
return true;
}
}
if ( o->inherits( "QListView" ) ) {
if ( e->type() == QEvent::FocusIn ) {
if( o == Local_View) { //keep track of which view
whichTab = 1;
viewMenu->setItemChecked(viewMenu->idAt(0), true);
viewMenu->setItemChecked(viewMenu->idAt(1), false);
} else {
whichTab = 2;
viewMenu->setItemChecked(viewMenu->idAt(0), false);
viewMenu->setItemChecked(viewMenu->idAt(1), true);
}
}
OtherView()->setSelected( OtherView()->currentItem(), FALSE );//make sure there's correct selection
}
return QWidget::eventFilter( o, e );
}
void AdvancedFm::cancelRename() {
// odebug << "cancel rename" << oendl;
QListView * view;
view = CurrentView();
bool resetFocus = view->viewport()->focusProxy() == renameBox;
delete renameBox;
renameBox = 0;
if ( resetFocus ) {
view->viewport()->setFocusProxy( view);
view->setFocus();
}
}
void AdvancedFm::doRename(QListView * view) {
if( !CurrentView()->currentItem()) return;
QRect r = view->itemRect( view->currentItem( ));
r = QRect( view->viewportToContents( r.topLeft() ), r.size() );
r.setX( view->contentsX() );
if ( r.width() > view->visibleWidth() )
r.setWidth( view->visibleWidth() );
renameBox = new QLineEdit( view->viewport(), "qt_renamebox" );
renameBox->setFrame(true);
renameBox->setText( view->currentItem()->text(0) );
renameBox->selectAll();
renameBox->installEventFilter( this );
view->addChild( renameBox, r.x(), r.y() );
renameBox->resize( r.size() );
view->viewport()->setFocusProxy( renameBox );
renameBox->setFocus();
renameBox->show();
}
void AdvancedFm::renameIt() {
if( !CurrentView()->currentItem()) return;
QListView *thisView = CurrentView();
oldName = thisView->currentItem()->text(0);
doRename( thisView );
}
void AdvancedFm::okRename() {
qDebug("okrename");
if( !renameBox) return;
QString newName = renameBox->text();
cancelRename();
QListView * view = CurrentView();
QString path = CurrentDir()->canonicalPath() + "/";
oldName = path + oldName;
newName = path + newName;
if( rename( oldName.latin1(), newName.latin1())== -1)
QMessageBox::message(tr("Note"),tr("Could not rename"));
else
oldName = "";
QListViewItem *item = view->currentItem();
view->takeItem( item );
delete item;
populateView();
}
void AdvancedFm::openSearch() {
QMessageBox::message(tr("Note"),tr("Not Yet Implemented"));
}
diff --git a/noncore/net/opie-smb/config.in b/noncore/net/opie-smb/config.in
new file mode 100644
index 0000000..4ff78fd
--- a/dev/null
+++ b/noncore/net/opie-smb/config.in
@@ -0,0 +1,4 @@
+ config OPIESMB
+ boolean "opie-smb (samba front end client for Opie)"
+ default "n"
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE
diff --git a/noncore/net/opie-smb/main.cpp b/noncore/net/opie-smb/main.cpp
new file mode 100644
index 0000000..5fae972
--- a/dev/null
+++ b/noncore/net/opie-smb/main.cpp
@@ -0,0 +1,6 @@
+#include "qsmb.h"
+#include <opie2/oapplicationfactory.h>
+using namespace Opie::Core;
+OPIE_EXPORT_APP( OApplicationFactory<Qsmb> )
+
+
diff --git a/noncore/net/opie-smb/opie-smb.control b/noncore/net/opie-smb/opie-smb.control
new file mode 100644
index 0000000..ce5c6bf
--- a/dev/null
+++ b/noncore/net/opie-smb/opie-smb.control
@@ -0,0 +1,12 @@
+Package: smbclient
+Version: 1.0
+Architecture: arm
+Arch: arm
+Maintainer: Kurt Korbatits (support@midget.net.au)
+Section: Network
+Priority: optional
+Description: Gui front end for samba utilities.
+Source:
+Depends: smbclient
+
+
diff --git a/noncore/net/opie-smb/opie-smb.pro b/noncore/net/opie-smb/opie-smb.pro
new file mode 100644
index 0000000..90f9980
--- a/dev/null
+++ b/noncore/net/opie-smb/opie-smb.pro
@@ -0,0 +1,18 @@
+TEMPLATE = app
+CONFIG += qte warn_on quickapp debug
+HEADERS = qsmb.h
+SOURCES = main.cpp qsmb.cpp
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
+DESTDIR = $(OPIEDIR)/bin
+LIBS += -lqpe -lopiecore2 -lopieui2 -lpthread
+
+# INCLUDEPATH += $(QPEDIR)/include
+# DEPENDPATH += $(QPEDIR)/include
+# LIBS +=
+
+INTERFACES = qsmbbase.ui
+TARGET = opie-smb
+
+#DEFINES += QT_QWS_NONOPIE
+include( $(OPIEDIR)/include.pro )
diff --git a/noncore/net/opie-smb/qsmb.cpp b/noncore/net/opie-smb/qsmb.cpp
new file mode 100644
index 0000000..527ab38
--- a/dev/null
+++ b/noncore/net/opie-smb/qsmb.cpp
@@ -0,0 +1,402 @@
+#include "qsmb.h"
+#include <qpushbutton.h>
+#include <qpe/qpeapplication.h>
+
+#include <string.h>
+#include <qstring.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qstringlist.h>
+#include <qcheckbox.h>
+#include <qtextview.h>
+#include <qmessagebox.h>
+
+
+#include <pthread.h>
+#include <signal.h>
+#include <ctype.h>
+
+
+#include <opie2/odebug.h>
+using namespace Opie::Core;
+
+
+Qsmb::Qsmb( QWidget* parent, const char* name, WFlags fl )
+ : FormQPESMBBase( parent, name, fl )
+{
+ connect(CBHost, SIGNAL(activated(int)), this, SLOT(hostSelected(int)));
+ connect(DoItBtn, SIGNAL(clicked()), this, SLOT(DoItClicked()));
+ connect(BtnScan, SIGNAL(clicked()), this, SLOT(scanClicked()));
+ connect(BtnClear, SIGNAL(clicked()), this, SLOT(clear()));
+
+//TODO configurable mount points
+ if(!QFileInfo("/mnt/samba1").exists()) system("mkdir /mnt/samba1");
+ if(!QFileInfo("/mnt/samba2").exists()) system("mkdir /mnt/samba2");
+ if(!QFileInfo("/mnt/samba2").exists()) system("mkdir /mnt/samba3");
+
+ mountpt->insertItem("/mnt/samba1",-1);
+ mountpt->insertItem("/mnt/samba2",-1);
+ mountpt->insertItem("/mnt/samba3",-1);
+
+ top_element = NULL;
+ scanning = false;
+}
+
+Qsmb::~Qsmb()
+{
+}
+
+void Qsmb::clear()
+{
+ if (scanning) return;
+ ListViewScan->clear();
+ TextViewOutput->setText("");
+ top_element = NULL;
+}
+
+void Qsmb::scanClicked()
+{
+ if (scanning) return;
+ pthread_create(&tpid, NULL, runit, (void *)this);
+}
+
+void Qsmb::DoItClicked()
+{
+
+ if(! ListViewScan->selectedItem()) {
+ QMessageBox::warning(this, tr("Error"),tr("<p>No share selected!</p>"));
+ return;
+ }
+ if (scanning) return;
+ pthread_create(&tpid, NULL, runitm, (void *)this);
+}
+
+void* runit(void* arg)
+{
+ Qsmb* caller = (Qsmb*)arg;
+ caller->scan();
+ return(0);
+}
+
+void* runitm(void* arg)
+{
+ Qsmb* caller = (Qsmb*)arg;
+ caller->DoIt();
+ return(0);
+}
+
+void Qsmb::scan()
+{
+ int i;
+
+ if (scanning) return;
+ scanning = true;
+
+ char match[512], lmhosts[512];
+ QString cmd;
+ char result[256];
+
+ FILE *pipe, *pipe2;
+
+ LScan->setText("Scanning...");
+ qApp->processEvents();
+
+ cmd = "ifconfig |grep 'addr:'|awk '{print $2}'|awk 'BEGIN{FS=\":\"}{print $2}'|sed 's/\\.[0-9]*$//'|head -n1";
+
+ owarn << "cmd: " << cmd << oendl;
+
+ /* run findsmb & read output */
+ if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+ TextViewOutput->append(result);
+ return;
+ }
+ while(fgets(result, 256, pipe) != NULL) {
+ strcpy( match, result);
+ match[5]='\0';
+ break;
+ }
+ owarn << "match: " << match << oendl;
+
+ cmd = "/usr/bin/findsmb";
+ owarn <<"cmd: " << cmd << oendl;
+
+ TextViewOutput->append(cmd);
+
+ snprintf(lmhosts, 512, "echo '127.0.0.1 localhost'>/etc/samba/lmhosts");
+
+ if ((pipe2 = popen(lmhosts, "r")) == NULL) {
+ snprintf(result, 256, "Error: Can't run %s", lmhosts);
+ //TextViewOutput->append(result);
+ return;
+ }
+
+ /* run command & read output */
+ if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+ TextViewOutput->append(result);
+ return;
+ }
+
+ /* parse output and display in ListViewScan */
+ while(fgets(result, 256, pipe) != NULL) {
+ /* put result into TextViewOutput */
+ TextViewOutput->append(result);
+
+ if( strstr(result, match) != NULL ) {
+ char ip_addr[256], host[256], *ptr1;
+
+ strcpy( ip_addr, result);
+ ptr1 = strchr(ip_addr,' ');
+ strcpy( host, ptr1);
+ ip_addr[ptr1 - ip_addr]='\0';
+
+ for(i = 0; i < 256; i++) {
+ if(host[i]!=' ') {
+ strcpy( host, host + i);
+ break;
+ }
+ }
+ ptr1 = strchr(host,' ');
+ host[ptr1 - host] = '\0';
+
+ owarn << "add host: " << host << oendl;
+
+ CBHost->insertItem( host, -1);
+ snprintf( lmhosts, 512, "echo '%s %s'>>/etc/samba/lmhosts", ip_addr,host);
+
+ owarn << "lmhosts: " << lmhosts << oendl;
+
+ if ((pipe2 = popen(lmhosts, "r")) == NULL) {
+ snprintf(result, 256, "Error: Can't run %s", lmhosts);
+ return;
+ }
+ }
+ }
+
+ TextViewOutput->append("\n\n============================================\n");
+ LScan->setText("");
+ scanning = false;
+}
+
+void Qsmb::hostSelected(int index)
+{
+ owarn << "hostSelected" << oendl;
+ int i;
+
+ QListViewItem *element;
+ QListViewItem *parent;
+
+ QString text = CBHost->currentText();
+
+ if (scanning) return;
+ scanning = true;
+
+ QString cmd;
+ char result[256];
+
+ FILE *pipe;
+
+ LScan->setText("Scanning...");
+
+ if((const char *)username->text() == '\0')
+ cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N 2>&1 |grep Disk";
+ else
+ cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N -U"+username->text()+":"+password->text()+" 2>&1 |grep Disk";
+
+ for(i = 0; i < 512; i++) {
+ if(cmd[i]==':') {
+ cmd[i]='%';
+ break;
+ }
+ if(cmd[i]=='\0')
+ break;
+ }
+
+ owarn << "i="<< index << "cmd:" << cmd << oendl;
+
+ TextViewOutput->append(cmd);
+
+ /* run smbclient & read output */
+ if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+// cmd = "Error: Can't run "+cmd;
+ TextViewOutput->append(result);
+ return;
+ }
+
+ /* parse output and display in ListViewScan */
+ while(fgets(result, 256, pipe) != NULL) {
+ /* put result into TextViewOutput */
+ TextViewOutput->append(result);
+
+ if( strchr(result, '$') == NULL ) {
+ char share[256], *ptr1;
+
+ strcpy(share,result);
+ ptr1 = strchr(share,' ');
+ share[ptr1 - share]='\0';
+
+ owarn<< "add share: " << share << oendl;
+
+ if(top_element != NULL) {
+ bool found = false;
+ element = top_element;
+
+ while(element != NULL && !found) {
+ if(strcmp( element->text(0).ascii(), share)==0) {
+ parent = element;
+ found = true;
+ }
+ element = element->nextSibling();
+ }
+
+ if(!found) {
+ element = new QListViewItem(ListViewScan,share);
+ element->setOpen(true);
+ parent=element;
+ }
+ } else {
+ element = new QListViewItem(ListViewScan,share);
+ element->setOpen(true);
+ top_element = element;
+ parent = element;
+ }
+ }
+ }
+
+ TextViewOutput->append("\n\n============================================\n");
+ LScan->setText("");
+ scanning = false;
+}
+
+void Qsmb::DoIt()
+{
+ QListViewItem *element;
+ element = ListViewScan->selectedItem();
+ if(!element) {
+ QMessageBox::warning(this, tr("Error!!"),tr("<p><b>No</b> share selected!!</p>"));
+ return;
+ }
+
+ if (scanning) return;
+ scanning = true;
+
+ int i;
+
+ char share[512];
+ QString cmd;
+ QString cmd2;
+ char result[256];
+// QString result;
+ QString text = mountpt->currentText();
+
+ FILE *pipe,*pipe2;
+
+ LScan->setText("Mounting...");
+ qApp->processEvents();
+
+ cmd = "mkdir -p "+ text;
+
+ owarn<<"cmd: "<< cmd << oendl;
+
+ /* make sure mount exists! */
+ if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
+
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+ // result = "Error: Can't run " + cmd;
+ TextViewOutput->append(result);
+ return;
+ }
+
+ while(fgets(result, 256, pipe2) != NULL) {
+ /* put result into TextViewOutput */
+ TextViewOutput->append(result);
+ }
+
+
+ strcpy(share,(const char *)element->text(0));
+
+ for(i = 0; i < 256; i++) {
+ if(isalpha( share[i])) {
+ strcpy( share, share + i);
+ break;
+ }
+ }
+
+ cmd = "/usr/bin/smbmount //"+CBHost->currentText()+"/"+share+" "+mountpt->currentText()+" -U"+username->text()+":"+password->text();
+
+ for(i = 0; i < 512; i++) {
+ if(cmd[i]==':') {
+ cmd[i]='%';
+ break;
+ }
+ if(cmd[i]=='\0')
+ break;
+ }
+
+ owarn << "cmd: " << cmd << oendl;
+ TextViewOutput->append(cmd.latin1());
+
+
+ if(onbootBtn->isChecked()) {
+ owarn << "Saving Setting permanently..." << oendl;
+ cmd2 = "echo '" + cmd + "'>/opt/QtPalmtop/etc/samba.env";
+
+ /* run command & read output */
+ if ((pipe = popen(cmd2.latin1(), "r")) == NULL) {
+
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+// result = "Error: Can't run "+ cmd;
+ //TextViewOutput->append(result);
+ return;
+ }
+ /* parse output and display in ListViewScan */
+ while(fgets(result, 256, pipe) != NULL) {
+ /* put result into TextViewOutput */
+ //TextViewOutput->append(result);
+ }
+ }
+
+ /* run command & read output */
+ if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
+
+// result = "Error: Can't run "+ cmd;
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+
+ TextViewOutput->append(result);
+ return;
+ }
+
+ /* parse output and display in ListViewScan */
+ while(fgets(result, 256, pipe) != NULL) {
+ /* put result into TextViewOutput */
+ TextViewOutput->append(result);
+ }
+ TextViewOutput->append("\n\n================CheckMounts==================\n");
+ LScan->setText("");
+
+ cmd = "/bin/mount 2>&1";
+ owarn << "cmd: " << cmd << oendl;
+
+ if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
+
+ snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+// result = "Error: Can't run "+ cmd;
+
+ TextViewOutput->append(result);
+ return;
+ }
+ /* parse output and display in ListViewScan */
+ while(fgets(result, 256, pipe2) != NULL) {
+ /* put result into TextViewOutput */
+ TextViewOutput->append(result);
+ }
+
+ TextViewOutput->append("\n\n============================================\n");
+ scanning = false;
+}
diff --git a/noncore/net/opie-smb/qsmb.h b/noncore/net/opie-smb/qsmb.h
new file mode 100644
index 0000000..8fefe91
--- a/dev/null
+++ b/noncore/net/opie-smb/qsmb.h
@@ -0,0 +1,39 @@
+#ifndef QSMB_H
+#define QSMB_H
+
+#include "qsmbbase.h"
+
+#include <stdlib.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <qlistview.h>
+#include <pthread.h>
+
+class Qsmb : public FormQPESMBBase
+{
+ Q_OBJECT
+
+public:
+ static QString appName() { return QString::fromLatin1("opie-smb"); }
+ Qsmb( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~Qsmb();
+ void scan();
+ void DoIt();
+
+private:
+ QListViewItem *top_element;
+ QComboBox *hosts;
+ pthread_t tpid;
+ bool scanning;
+
+public slots:
+ void clear();
+ void scanClicked();
+ void hostSelected(int);
+ void DoItClicked();
+};
+void* runit(void *arg);
+void* runitm(void *arg);
+
+#endif // QSMB_H
diff --git a/noncore/net/opie-smb/qsmbbase.cpp b/noncore/net/opie-smb/qsmbbase.cpp
new file mode 100644
index 0000000..21cd306
--- a/dev/null
+++ b/noncore/net/opie-smb/qsmbbase.cpp
@@ -0,0 +1,146 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'qsmbbase.ui'
+**
+** Created: Thu Aug 11 19:30:44 2005
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+#include "qsmbbase.h"
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qheader.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qpushbutton.h>
+#include <qtabwidget.h>
+#include <qtextview.h>
+#include <qlayout.h>
+#include <qvariant.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ * Constructs a FormQPESMBBase which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+FormQPESMBBase::FormQPESMBBase( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+{
+ if ( !name )
+ setName( "FormQPESMBBase" );
+ resize( 254, 352 );
+ QFont f( font() );
+ setFont( f );
+ setCaption( tr( "Opie Smb" ) );
+ FormQPESMBBaseLayout = new QGridLayout( this );
+ FormQPESMBBaseLayout->setSpacing( 2 );
+ FormQPESMBBaseLayout->setMargin( 0 );
+
+ TabWidget2 = new QTabWidget( this, "TabWidget2" );
+
+ tab = new QWidget( TabWidget2, "tab" );
+ tabLayout = new QGridLayout( tab );
+ tabLayout->setSpacing( 0 );
+ tabLayout->setMargin( 2 );
+
+ CBHost = new QComboBox( FALSE, tab, "CBHost" );
+
+ tabLayout->addMultiCellWidget( CBHost, 1, 1, 0, 3 );
+
+ mountpt = new QComboBox( FALSE, tab, "mountpt" );
+
+ tabLayout->addMultiCellWidget( mountpt, 4, 4, 1, 3 );
+
+ LScan = new QLabel( tab, "LScan" );
+ LScan->setText( tr( "" ) );
+
+ tabLayout->addWidget( LScan, 0, 3 );
+
+ textLabel1 = new QLabel( tab, "textLabel1" );
+ textLabel1->setText( tr( "mount pt:" ) );
+
+ tabLayout->addWidget( textLabel1, 4, 0 );
+
+ ListViewScan = new QListView( tab, "ListViewScan" );
+ ListViewScan->addColumn( tr( "Shares" ) );
+
+ tabLayout->addMultiCellWidget( ListViewScan, 2, 2, 0, 3 );
+
+ BtnScan = new QPushButton( tab, "BtnScan" );
+ BtnScan->setText( tr( "&Scan" ) );
+
+ tabLayout->addMultiCellWidget( BtnScan, 0, 0, 0, 1 );
+
+ BtnClear = new QPushButton( tab, "BtnClear" );
+ BtnClear->setText( tr( "&Clear" ) );
+
+ tabLayout->addWidget( BtnClear, 0, 2 );
+
+ onbootBtn = new QCheckBox( tab, "onbootBtn" );
+ onbootBtn->setText( tr( "Reconnect on boot" ) );
+
+ tabLayout->addMultiCellWidget( onbootBtn, 3, 3, 0, 2 );
+
+ DoItBtn = new QPushButton( tab, "DoItBtn" );
+ DoItBtn->setText( tr( "&Login" ) );
+
+ tabLayout->addMultiCellWidget( DoItBtn, 5, 5, 0, 1 );
+
+ Layout6 = new QGridLayout;
+ Layout6->setSpacing( 6 );
+ Layout6->setMargin( 0 );
+
+ Layout2 = new QHBoxLayout;
+ Layout2->setSpacing( 6 );
+ Layout2->setMargin( 0 );
+
+ pwdlabel = new QLabel( tab, "pwdlabel" );
+ pwdlabel->setText( tr( "password" ) );
+ Layout2->addWidget( pwdlabel );
+
+ password = new QLineEdit( tab, "password" );
+ Layout2->addWidget( password );
+
+ Layout6->addLayout( Layout2, 1, 0 );
+
+ Layout5 = new QHBoxLayout;
+ Layout5->setSpacing( 6 );
+ Layout5->setMargin( 0 );
+
+ usrlabel = new QLabel( tab, "usrlabel" );
+ usrlabel->setText( tr( "username" ) );
+ Layout5->addWidget( usrlabel );
+
+ username = new QLineEdit( tab, "username" );
+ Layout5->addWidget( username );
+
+ Layout6->addLayout( Layout5, 0, 0 );
+
+ tabLayout->addMultiCellLayout( Layout6, 5, 5, 2, 3 );
+ TabWidget2->insertTab( tab, tr( "Scan" ) );
+
+ tab_2 = new QWidget( TabWidget2, "tab_2" );
+ tabLayout_2 = new QGridLayout( tab_2 );
+ tabLayout_2->setSpacing( 6 );
+ tabLayout_2->setMargin( 11 );
+
+ TextViewOutput = new QTextView( tab_2, "TextViewOutput" );
+ TextViewOutput->setTextFormat( QTextView::PlainText );
+
+ tabLayout_2->addWidget( TextViewOutput, 0, 0 );
+ TabWidget2->insertTab( tab_2, tr( "SMB Output" ) );
+
+ FormQPESMBBaseLayout->addWidget( TabWidget2, 0, 0 );
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+FormQPESMBBase::~FormQPESMBBase()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
diff --git a/noncore/net/opie-smb/qsmbbase.h b/noncore/net/opie-smb/qsmbbase.h
new file mode 100644
index 0000000..3ee2f57
--- a/dev/null
+++ b/noncore/net/opie-smb/qsmbbase.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'qsmbbase.ui'
+**
+** Created: Thu Aug 11 19:30:41 2005
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+#ifndef FORMQPESMBBASE_H
+#define FORMQPESMBBASE_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QCheckBox;
+class QComboBox;
+class QLabel;
+class QLineEdit;
+class QListView;
+class QListViewItem;
+class QPushButton;
+class QTabWidget;
+class QTextView;
+
+class FormQPESMBBase : public QWidget
+{
+ Q_OBJECT
+
+public:
+ FormQPESMBBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~FormQPESMBBase();
+
+ QTabWidget* TabWidget2;
+ QWidget* tab;
+ QComboBox* CBHost;
+ QComboBox* mountpt;
+ QLabel* LScan;
+ QLabel* textLabel1;
+ QListView* ListViewScan;
+ QPushButton* BtnScan;
+ QPushButton* BtnClear;
+ QCheckBox* onbootBtn;
+ QPushButton* DoItBtn;
+ QLabel* pwdlabel;
+ QLineEdit* password;
+ QLabel* usrlabel;
+ QLineEdit* username;
+ QWidget* tab_2;
+ QTextView* TextViewOutput;
+
+protected:
+ QGridLayout* FormQPESMBBaseLayout;
+ QGridLayout* tabLayout;
+ QGridLayout* Layout6;
+ QHBoxLayout* Layout2;
+ QHBoxLayout* Layout5;
+ QGridLayout* tabLayout_2;
+};
+
+#endif // FORMQPESMBBASE_H
diff --git a/noncore/net/opie-smb/qsmbbase.ui b/noncore/net/opie-smb/qsmbbase.ui
new file mode 100644
index 0000000..35a1aec
--- a/dev/null
+++ b/noncore/net/opie-smb/qsmbbase.ui
@@ -0,0 +1,298 @@
+<!DOCTYPE UI><UI>
+<class>FormQPESMBBase</class>
+<widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>FormQPESMBBase</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>254</width>
+ <height>352</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>font</name>
+ <font>
+ </font>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>Opie Smb</string>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>2</number>
+ </property>
+ <widget row="0" column="0" >
+ <class>QTabWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TabWidget2</cstring>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>tab</cstring>
+ </property>
+ <attribute>
+ <name>title</name>
+ <string>Scan</string>
+ </attribute>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>2</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>0</number>
+ </property>
+ <widget row="1" column="0" rowspan="1" colspan="4" >
+ <class>QComboBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>CBHost</cstring>
+ </property>
+ </widget>
+ <widget row="4" column="1" rowspan="1" colspan="3" >
+ <class>QComboBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>mountpt</cstring>
+ </property>
+ </widget>
+ <widget row="0" column="3" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>LScan</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string></string>
+ </property>
+ </widget>
+ <widget row="4" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>textLabel1</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>mount pt:</string>
+ </property>
+ </widget>
+ <widget row="2" column="0" rowspan="1" colspan="4" >
+ <class>QListView</class>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Shares</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ListViewScan</cstring>
+ </property>
+ </widget>
+ <widget row="0" column="0" rowspan="1" colspan="2" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>BtnScan</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&amp;Scan</string>
+ </property>
+ </widget>
+ <widget row="0" column="2" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>BtnClear</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&amp;Clear</string>
+ </property>
+ </widget>
+ <widget row="3" column="0" rowspan="1" colspan="3" >
+ <class>QCheckBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>onbootBtn</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Reconnect on boot</string>
+ </property>
+ </widget>
+ <widget row="5" column="0" rowspan="1" colspan="2" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>DoItBtn</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&amp;Login</string>
+ </property>
+ </widget>
+ <widget row="5" column="2" rowspan="1" colspan="2" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout6</cstring>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="1" column="0" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout2</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>pwdlabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>password</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>password</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget row="0" column="0" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout5</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>usrlabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>username</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>username</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+ </widget>
+ <widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>tab</cstring>
+ </property>
+ <attribute>
+ <name>title</name>
+ <string>SMB Output</string>
+ </attribute>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="0" column="0" >
+ <class>QTextView</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextViewOutput</cstring>
+ </property>
+ <property stdset="1">
+ <name>textFormat</name>
+ <enum>PlainText</enum>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+</UI>
diff --git a/noncore/settings/netsystemtime/formattabwidget.cpp b/noncore/settings/netsystemtime/formattabwidget.cpp
index 7d01bff..a037881 100644
--- a/noncore/settings/netsystemtime/formattabwidget.cpp
+++ b/noncore/settings/netsystemtime/formattabwidget.cpp
@@ -1,170 +1,170 @@
/*
                This file is part of the Opie Project
Copyright (C) Opie Team <opie-devel@handhelds.org>
=.
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
: ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
:     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "formattabwidget.h"
#include <qpe/config.h>
#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
#include <qpe/qcopenvelope_qws.h>
#endif
#include <qcombobox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qscrollview.h>
#include <qtimer.h>
FormatTabWidget::FormatTabWidget( QWidget *parent )
: QWidget( parent, 0x0, 0 )
{
QVBoxLayout *tmpvb = new QVBoxLayout( this );
QScrollView *sv = new QScrollView( this );
tmpvb->addWidget( sv, 0, 0 );
sv->setResizePolicy( QScrollView::AutoOneFit );
sv->setFrameStyle( QFrame::NoFrame );
QWidget *container = new QWidget( sv->viewport() );
sv->addChild( container );
QGridLayout *layout = new QGridLayout( container );
layout->setMargin( 2 );
layout->setSpacing( 4 );
// Time format selector
layout->addWidget( new QLabel( tr( "Time format" ), container ), 0, 0 );
cbAppletFormat = new QComboBox( container );
cbAppletFormat->insertItem( tr( "hh:mm" ), 0 );
cbAppletFormat->insertItem( tr( "D/M hh:mm" ), 1 );
cbAppletFormat->insertItem( tr( "M/D hh:mm" ), 2 );
layout->addWidget( cbAppletFormat, 0, 1 );
// 12/24 hour selector
layout->addWidget( new QLabel( tr( "12/24 hour" ), container ), 1, 0 );
cbAmpm = new QComboBox( container );
cbAmpm->insertItem( tr( "24 hour" ), 0 );
cbAmpm->insertItem( tr( "12 hour" ), 1 );
- connect( cbAmpm, SIGNAL(activated(int)), this, SIGNAL(show12HourTime(int)) );
+ connect( cbAmpm, SIGNAL(activated( int)), this, SIGNAL(show12HourTime( int)) );
layout->addWidget( cbAmpm, 1, 1 );
// Date format selector
layout->addWidget( new QLabel( tr( "Date format" ), container ), 2, 0 );
cbDateFormat = new QComboBox( container );
- connect( cbDateFormat, SIGNAL(activated(int)), this, SLOT(slotDateFormatChanged(int)) );
+ connect( cbDateFormat, SIGNAL(activated( int)), this, SLOT(slotDateFormatChanged( int)) );
layout->addWidget( cbDateFormat, 2, 1 );
// Week starts on selector
layout->addWidget( new QLabel( tr( "Weeks start on" ), container ), 3, 0 );
cbWeekStart = new QComboBox( container );
cbWeekStart->insertItem( tr( "Sunday" ), 0 );
cbWeekStart->insertItem( tr( "Monday" ), 1 );
connect( cbWeekStart, SIGNAL(activated(int)), this, SIGNAL(weekStartChanged(int)) );
layout->addWidget( cbWeekStart, 3, 1 );
// Initialize values
Config config( "qpe" );
config.setGroup( "Date" );
cbAppletFormat->setCurrentItem( config.readNumEntry( "ClockApplet", 0 ) );
DateFormat df(QChar(config.readEntry("Separator", "/")[0]),
(DateFormat::Order)config .readNumEntry("ShortOrder", DateFormat::DayMonthYear),
(DateFormat::Order)config.readNumEntry("LongOrder", DateFormat::DayMonthYear));
int currentdf = 0;
date_formats[0] = DateFormat( '/', DateFormat::MonthDayYear );
cbDateFormat->insertItem( tr( date_formats[0].toNumberString() ) );
date_formats[1] = DateFormat( '.', DateFormat::DayMonthYear );
if ( df == date_formats[1] )
currentdf = 1;
cbDateFormat->insertItem( tr( date_formats[1].toNumberString() ) );
date_formats[2] = DateFormat( '-', DateFormat::YearMonthDay, DateFormat::DayMonthYear );
if ( df == date_formats[2] )
currentdf = 2;
cbDateFormat->insertItem( tr( date_formats[2].toNumberString() ) ); //ISO8601
date_formats[3] = DateFormat( '/', DateFormat::DayMonthYear );
if ( df == date_formats[3] )
currentdf = 3;
cbDateFormat->insertItem( tr( date_formats[3].toNumberString() ) );
cbDateFormat->setCurrentItem( currentdf );
//dateButton->setDateFormat( df );
config.setGroup( "Time" );
cbAmpm->setCurrentItem( config.readBoolEntry( "AMPM", FALSE ) ? 1 : 0 );
cbWeekStart->setCurrentItem( config.readBoolEntry( "MONDAY", TRUE ) ? 1 : 0 );
// Send initial configuration options
QTimer::singleShot( 1200, this, SLOT(sendOptions()) );
}
FormatTabWidget::~FormatTabWidget()
{
}
void FormatTabWidget::saveSettings( bool commit )
{
int ampm = cbAmpm->currentItem();
int weekstart = cbWeekStart->currentItem();
DateFormat df = date_formats[cbDateFormat->currentItem()];
int appletformat = cbAppletFormat->currentItem();
if ( commit )
{
// Write settings to config file
Config config("qpe");
config.setGroup( "Time" );
config.writeEntry( "AMPM", ampm );
config.writeEntry( "MONDAY", weekstart );
config.setGroup( "Date" );
config.writeEntry( "Separator", QString( df.separator() ) );
config.writeEntry( "ShortOrder", df.shortOrder() );
config.writeEntry( "LongOrder", df.longOrder() );
config.writeEntry( "ClockApplet", appletformat );
}
// Make rest of system aware of new settings
QCopEnvelope setClock( "QPE/System", "clockChange(bool)" );
setClock << ampm;
QCopEnvelope setWeek( "QPE/System", "weekChange(bool)" );
setWeek << weekstart;
QCopEnvelope setDateFormat( "QPE/System", "setDateFormat(DateFormat)" );
setDateFormat << df;
}
void FormatTabWidget::slotDateFormatChanged( int selected )
{
emit dateFormatChanged( date_formats[selected] );
}
void FormatTabWidget::sendOptions()
{
emit show12HourTime( cbAmpm->currentItem() );
emit dateFormatChanged( date_formats[cbDateFormat->currentItem()] );
emit weekStartChanged( cbWeekStart->currentItem() );
}
diff --git a/noncore/tools/calc2/binary/binary.pro b/noncore/tools/calc2/binary/binary.pro
index 1348d00..9cbb0ff 100644
--- a/noncore/tools/calc2/binary/binary.pro
+++ b/noncore/tools/calc2/binary/binary.pro
@@ -1,17 +1,15 @@
-#TEMPLATE = lib
-#CONFIG -= moc
-#CONFIG += qt
-## Input
-#INTERFACES += binary.ui
-#HEADERS = binaryimpl.h \
-# binaryfactory.h
-#SOURCES = binaryimpl.cpp \
-# binaryfactory.cpp
-#INCLUDEPATH += $(OPIEDIR)/include \
-# $(OPIEDIR)/calc2
-#DEPENDPATH += $(OPIEDIR)/include
-#DESTDIR = $(OPIEDIR)/plugins/calculator
-#TARGET = binary
-#
+TEMPLATE = lib
+CONFIG += qt
+INTERFACES += binary.ui
+HEADERS = binaryimpl.h \
+ binaryfactory.h
+SOURCES = binaryimpl.cpp \
+ binaryfactory.cpp
+INCLUDEPATH += $(OPIEDIR)/include \
+ $(OPIEDIR)/calc2
+DEPENDPATH += $(OPIEDIR)/include
+DESTDIR = $(OPIEDIR)/plugins/calculator
+TARGET = binary
+
include( $(OPIEDIR)/include.pro )
diff --git a/noncore/tools/calc2/binary/binaryfactory.cpp b/noncore/tools/calc2/binary/binaryfactory.cpp
index 110334f..bccc9ca 100644
--- a/noncore/tools/calc2/binary/binaryfactory.cpp
+++ b/noncore/tools/calc2/binary/binaryfactory.cpp
@@ -1,51 +1,51 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "binaryfactory.h"
#include "binaryimpl.h"
-#include <engine.h>
+#include "../engine.h"
QWidget *BinaryInterface::getPlugin ( Engine *e, QWidget *parent ) {
if ( !input )
input = new FormBinaryImpl ( e, parent );
return input;
}
#ifndef QT_NO_COMPONENT
QRESULT BinaryInterface::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
{
*iface = 0;
if ( uuid == IID_QUnknown )
*iface = this;
else if ( uuid == IID_Calc )
*iface = this;
if ( *iface )
(*iface)->addRef();
return QS_OK;
}
Q_EXPORT_INTERFACE()
{
Q_CREATE_INSTANCE( BinaryInterface )
}
#endif
diff --git a/noncore/tools/calc2/binary/binaryfactory.h b/noncore/tools/calc2/binary/binaryfactory.h
index e015384..237a926 100644
--- a/noncore/tools/calc2/binary/binaryfactory.h
+++ b/noncore/tools/calc2/binary/binaryfactory.h
@@ -1,46 +1,46 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef BINARYIMPL_H
#define BINARYIMPL_H
#include "binaryimpl.h"
-#include <plugininterface.h>
-#include <engine.h>
+#include "../plugininterface.h"
+#include "../engine.h"
class BinaryInterface : public CalcInterface
{
public:
BinaryInterface(){input = 0;};
virtual ~BinaryInterface(){};
#ifndef QT_NO_COMPONENT
QRESULT queryInterface( const QUuid&, QUnknownInterface** );
Q_REFCOUNT
#endif
QWidget *getPlugin( Engine *, QWidget *parent );
private:
FormBinaryImpl *input;
ulong ref;
};
#endif
diff --git a/noncore/tools/calc2/binary/binaryimpl.cpp b/noncore/tools/calc2/binary/binaryimpl.cpp
index ffc56ad..ecbf232 100644
--- a/noncore/tools/calc2/binary/binaryimpl.cpp
+++ b/noncore/tools/calc2/binary/binaryimpl.cpp
@@ -1,110 +1,110 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "binaryimpl.h"
-#include <instruction.h>
+#include "../instruction.h"
class iXOR : public Instruction {
public:
iXOR():Instruction(){};
~iXOR(){};
Data eval(Data num) {
Data result;
result.i = num.i ^ acc.i;
return result;
};
};
class iAND : public Instruction {
public:
iAND():Instruction(){};
~iAND(){};
Data eval(Data num) {
Data result;
result.i = num.i & acc.i;
return result;
};
};
class iNOT : public Instruction {
public:
iNOT():Instruction(){};
~iNOT(){};
Data eval(Data num) {
Data result;
result.i = ~ num.i;
return result;
};
};
class iOR : public Instruction {
public:
iOR():Instruction(){};
~iOR(){};
Data eval(Data num) {
Data result;
result.i = num.i | acc.i;
return result;
};
};
class iLSH : public Instruction {
public:
iLSH():Instruction(){};
~iLSH(){};
Data eval(Data num) {
Data result;
result.i = num.i << 1;
return result;
};
};
class iRSH : public Instruction {
public:
iRSH():Instruction(){};
~iRSH(){};
Data eval(Data num) {
Data result;
result.i = num.i >> 1;
return result;
};
};
void FormBinaryImpl::val0Clicked() {
engine->pushValue('0');
}
void FormBinaryImpl::val1Clicked() {
engine->pushValue('1');
}
void FormBinaryImpl::XORClicked() {
engine->pushInstruction(new iXOR());
}
void FormBinaryImpl::ANDClicked() {
engine->pushInstruction(new iAND());
}
void FormBinaryImpl::NOTClicked() {
engine->immediateInstruction(new iNOT());
}
void FormBinaryImpl::ORClicked() {
engine->pushInstruction(new iOR());
}
void FormBinaryImpl::LSHClicked() {
engine->immediateInstruction(new iLSH());
}
void FormBinaryImpl::RSHClicked() {
engine->immediateInstruction(new iRSH());
}
diff --git a/noncore/tools/calc2/binary/binaryimpl.h b/noncore/tools/calc2/binary/binaryimpl.h
index bf9e3a7..7bf123a 100644
--- a/noncore/tools/calc2/binary/binaryimpl.h
+++ b/noncore/tools/calc2/binary/binaryimpl.h
@@ -1,50 +1,50 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef FORMBINARYINPUTIMPL
#define FORMBINARYINPUTIMPL
#include "binary.h"
-#include <engine.h>
+#include "../engine.h"
class FormBinaryImpl : public FormBinary {
Q_OBJECT
public:
FormBinaryImpl(Engine *e,QWidget *p) : FormBinary (p,"Binary") {
engine = e;
engine->setRepresentation(rBin);
};
~FormBinaryImpl(){};
private:
Engine *engine;
private slots:
void val0Clicked();
void val1Clicked();
void XORClicked();
void ANDClicked();
void NOTClicked();
void ORClicked();
void LSHClicked();
void RSHClicked();
};
#endif
diff --git a/noncore/tools/calc2/calc.cpp b/noncore/tools/calc2/calc.cpp
index c7656bf..8c50c2c 100644
--- a/noncore/tools/calc2/calc.cpp
+++ b/noncore/tools/calc2/calc.cpp
@@ -1,104 +1,103 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qvaluelist.h>
#include <qpe/qpeapplication.h>
#include <qdir.h>
#include <qwidgetstack.h>
#include "calc.h"
#include "plugininterface.h"
calc::calc (QWidget * p, const char *n):QWidget (p, n)
{
setCaption (tr ("Calculator"));
// widgets
LCD = new QLCDNumber (this);
LCD->setMaximumSize (QSize (240, 30));
LCD->setNumDigits(12);
LCD->setSegmentStyle(QLCDNumber::Filled);
pluginWidgetStack = new QWidgetStack (this);
// layout widgets
calculatorLayout = new QVBoxLayout (this);
calculatorLayout->addWidget (LCD);
calculatorLayout->addWidget (pluginWidgetStack);
// no formatting of display for now
connect (&engine, SIGNAL(display(double)), LCD, SLOT(display(double)));
connect (&engine, SIGNAL(display(const QString&)), LCD, SLOT(display(const QString&)));
connect (&engine, SIGNAL(setBinMode()), LCD, SLOT(setBinMode()));
connect (&engine, SIGNAL(setOctMode()), LCD, SLOT(setOctMode()));
connect (&engine, SIGNAL(setDecMode()), LCD, SLOT(setDecMode()));
connect (&engine, SIGNAL(setHexMode()), LCD, SLOT(setHexMode()));
#ifndef NO_PLUGINS
// load plugins
QValueList < Plugin >::Iterator mit;
for (mit = pluginList.begin (); mit != pluginList.end (); ++mit) {
(*mit).interface->release ();
(*mit).library->unload ();
delete (*mit).library;
}
pluginList.clear ();
QString path = QPEApplication::qpeDir() + "plugins/calculator";
QDir dir (path, "lib*.so");
QStringList list = dir.entryList ();
QStringList::Iterator it;
for (it = list.begin (); it != list.end (); ++it) {
CalcInterface *iface = 0;
QLibrary *lib = new QLibrary (path + "/" + *it);
-
Plugin plugin;
plugin.pluginWidget = 0;
if (lib->queryInterface (IID_Calc, (QUnknownInterface **) & iface) ==
QS_OK) {
plugin.library = lib;
plugin.interface = iface;
plugin.pluginWidget = plugin.interface->getPlugin(&engine,pluginWidgetStack);
if (plugin.pluginWidget)
pluginWidgetStack->addWidget (plugin.pluginWidget, pluginList.count());
pluginList.append (plugin);
} else {
delete lib;
}
}
setMode (1);
#else
// load simple interface
#endif
}
calc::~calc ()
{
#ifndef NO_PLUGINS
QValueList < Plugin >::Iterator mit;
for (mit = pluginList.begin (); mit != pluginList.end (); ++mit) {
(*mit).interface->release ();
(*mit).library->unload ();
delete (*mit).library;
}
#endif
}
diff --git a/noncore/tools/calc2/simple/simple.pro b/noncore/tools/calc2/simple/simple.pro
index 2312f99..dde5e7d 100644
--- a/noncore/tools/calc2/simple/simple.pro
+++ b/noncore/tools/calc2/simple/simple.pro
@@ -1,14 +1,12 @@
-#TEMPLATE = lib
-#CONFIG -= moc
-#CONFIG += qt
-## Input
-#INTERFACES += simple.ui
-#HEADERS = simpleimpl.h simplefactory.h stdinstructions.h
-#SOURCES = simpleimpl.cpp simplefactory.cpp
-#INCLUDEPATH += $(OPIEDIR)/include \
-# $(OPIEDIR)/calc2
-#DEPENDPATH += $(OPIEDIR)/include
-#DESTDIR = $(OPIEDIR)/plugins/calculator
-#
+TEMPLATE = lib
+CONFIG += qt
+INTERFACES += simple.ui
+HEADERS = simpleimpl.h simplefactory.h stdinstructions.h
+SOURCES = simpleimpl.cpp simplefactory.cpp
+INCLUDEPATH += $(OPIEDIR)/include \
+ $(OPIEDIR)/calc2
+DEPENDPATH += $(OPIEDIR)/include
+DESTDIR = $(OPIEDIR)/plugins/calculator
+
include( $(OPIEDIR)/include.pro )
diff --git a/noncore/tools/calc2/simple/simplefactory.cpp b/noncore/tools/calc2/simple/simplefactory.cpp
index 515418f..52b090b 100644
--- a/noncore/tools/calc2/simple/simplefactory.cpp
+++ b/noncore/tools/calc2/simple/simplefactory.cpp
@@ -1,51 +1,51 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "simplefactory.h"
#include "simpleimpl.h"
-#include <engine.h>
+#include "../engine.h"
QWidget *SimpleInterface::getPlugin ( Engine *e, QWidget *parent ) {
if ( !input )
input = new FormSimpleImpl ( e, parent );
return input;
}
#ifndef QT_NO_COMPONENT
QRESULT SimpleInterface::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
{
*iface = 0;
if ( uuid == IID_QUnknown )
*iface = this;
else if ( uuid == IID_Calc )
*iface = this;
if ( *iface )
(*iface)->addRef();
return QS_OK;
}
Q_EXPORT_INTERFACE()
{
Q_CREATE_INSTANCE( SimpleInterface )
}
#endif
diff --git a/noncore/tools/calc2/simple/simplefactory.h b/noncore/tools/calc2/simple/simplefactory.h
index e1022fd..460c2b9 100644
--- a/noncore/tools/calc2/simple/simplefactory.h
+++ b/noncore/tools/calc2/simple/simplefactory.h
@@ -1,46 +1,46 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef BINARYIMPL_H
#define BINARYIMPL_H
#include "simpleimpl.h"
-#include <plugininterface.h>
-#include <engine.h>
+#include "../plugininterface.h"
+#include "../engine.h"
class SimpleInterface : public CalcInterface
{
public:
SimpleInterface(){input = 0;};
virtual ~SimpleInterface(){};
#ifndef QT_NO_COMPONENT
QRESULT queryInterface( const QUuid&, QUnknownInterface** );
Q_REFCOUNT
#endif
QWidget *getPlugin( Engine *, QWidget *parent );
private:
FormSimpleImpl *input;
ulong ref;
};
#endif
diff --git a/noncore/tools/calc2/simple/simpleimpl.cpp b/noncore/tools/calc2/simple/simpleimpl.cpp
index f71f000..447cbdf 100644
--- a/noncore/tools/calc2/simple/simpleimpl.cpp
+++ b/noncore/tools/calc2/simple/simpleimpl.cpp
@@ -1,120 +1,120 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qpushbutton.h>
#include <qlcdnumber.h>
#include "simpleimpl.h"
-#include <stdinstructions.h>
+#include "../stdinstructions.h"
void FormSimpleImpl::CEClicked() {
engine->hardReset();
}
void FormSimpleImpl::MCClicked() {
engine->memClear();
}
void FormSimpleImpl::MRClicked() {
engine->memRecall();
}
void FormSimpleImpl::MPlusClicked() {
engine->memSave();
}
void FormSimpleImpl::evalClicked() {
engine->eval();
}
void FormSimpleImpl::addClicked ()
{
engine->pushInstruction (new iAdd ());
}
void FormSimpleImpl::subClicked ()
{
engine->pushInstruction (new iSub ());
}
void FormSimpleImpl::mulClicked ()
{
engine->pushInstruction (new iMul ());
}
void FormSimpleImpl::divClicked ()
{
engine->pushInstruction (new iDiv ());
}
void FormSimpleImpl::decimalClicked ()
{
engine->pushValue ('.');
}
void FormSimpleImpl::val1Clicked ()
{
engine->pushValue ('1');
}
void FormSimpleImpl::val2Clicked ()
{
engine->pushValue ('2');
}
void FormSimpleImpl::val3Clicked ()
{
engine->pushValue ('3');
}
void FormSimpleImpl::val4Clicked ()
{
engine->pushValue ('4');
}
void FormSimpleImpl::val5Clicked ()
{
engine->pushValue ('5');
}
void FormSimpleImpl::val6Clicked ()
{
engine->pushValue ('6');
}
void FormSimpleImpl::val7Clicked ()
{
engine->pushValue ('7');
}
void FormSimpleImpl::val8Clicked ()
{
engine->pushValue ('8');
}
void FormSimpleImpl::val9Clicked ()
{
engine->pushValue ('9');
}
void FormSimpleImpl::val0Clicked ()
{
engine->pushValue ('0');
}
diff --git a/noncore/tools/calc2/simple/simpleimpl.h b/noncore/tools/calc2/simple/simpleimpl.h
index a2db154..b7b83e2 100644
--- a/noncore/tools/calc2/simple/simpleimpl.h
+++ b/noncore/tools/calc2/simple/simpleimpl.h
@@ -1,65 +1,65 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef STANDARDIMPL_H
#define STANDARDIMPL_H
#include <qpe/qmath.h>
#include <qlcdnumber.h>
#include "simple.h"
-#include "engine.h"
-#include "instruction.h"
+#include "../engine.h"
+#include "../instruction.h"
class FormSimpleImpl:public FormSimple {
Q_OBJECT
public:
FormSimpleImpl (Engine *e, QWidget * parent = 0, const char *name = 0)
:FormSimple (parent, name) {engine = e;engine->setRepresentation(rDouble);};
~FormSimpleImpl () { };
private:
Engine *engine;
private slots:
void MPlusClicked();
void MCClicked();
void MRClicked();
void CEClicked();
void evalClicked();
void addClicked ();
void decimalClicked ();
void divClicked ();
void mulClicked ();
void subClicked ();
void val0Clicked ();
void val1Clicked ();
void val2Clicked ();
void val3Clicked ();
void val4Clicked ();
void val5Clicked ();
void val6Clicked ();
void val7Clicked ();
void val8Clicked ();
void val9Clicked ();
};
#endif
diff --git a/packages b/packages
index 433bd06..86dcab4 100644
--- a/packages
+++ b/packages
@@ -1,264 +1,267 @@
CONFIG_ABOUTAPPLET core/applets/aboutapplet aboutapplet.pro
CONFIG_ADDRESSBOOK core/pim/addressbook addressbook.pro
CONFIG_ADVANCEDFM noncore/apps/advancedfm advancedfm.pro
CONFIG_APPEARANCE2 noncore/settings/appearance2 appearance2.pro
CONFIG_APPSKEY noncore/settings/appskey appskey.pro
CONFIG_AQPKG noncore/settings/aqpkg aqpkg.pro
CONFIG_AUTOROTATEAPPLET noncore/applets/autorotateapplet autorotateapplet.pro
CONFIG_BACKGAMMON noncore/games/backgammon backgammon.pro
CONFIG_BACKUP noncore/settings/backup backup.pro
CONFIG_BARTENDER noncore/apps/opie-bartender bartender.pro
CONFIG_BATTERYAPPLET core/applets/batteryapplet batteryapplet.pro
CONFIG_BEND noncore/unsupported/mail2/bend bend.pro
CONFIG_BIGSCREEN_EXAMPLE unsupported/libopie/big-screen/example osplitter_mail.pro
CONFIG_BINARY noncore/tools/calc2/binary binary.pro
CONFIG_BLUE-PIN noncore/net/opietooth/blue-pin blue-pin.pro
CONFIG_BOUNCE noncore/games/bounce bounce.pro
CONFIG_BRIGHTNESSAPPLET noncore/applets/brightnessapplet brightnessapplet.pro
CONFIG_BUTTON-SETTINGS core/settings/button button.pro
CONFIG_BUZZWORD noncore/games/buzzword buzzword.pro
-CONFIG_CALC2 noncore/tools/calc2 calc.pro
+CONFIG_CALC2 noncore/tools/calc2 calc2.pro
+CONFIG_CALC2-BINARY noncore/tools/calc2/binary binary.pro
+CONFIG_CALC2-SIMPLE noncore/tools/calc2/simple simple.pro
CONFIG_CALCULATOR noncore/tools/calculator calculator.pro
CONFIG_CALIBRATE core/apps/calibrate calibrate.pro
CONFIG_CAMERA noncore/multimedia/camera camera.pro
CONFIG_CARDMON core/applets/cardmon cardmon.pro
CONFIG_CHECKBOOK noncore/apps/checkbook checkbook.pro
CONFIG_CITYTIME core/settings/citytime citytime.pro
CONFIG_CLIPBOARDAPPLET core/applets/clipboardapplet clipboardapplet.pro
CONFIG_CLOCKAPPLET core/applets/clockapplet clockapplet.pro
CONFIG_CLOCK noncore/tools/clock clock.pro
CONFIG_CONFEDIT noncore/apps/confedit confedit.pro
CONFIG_DAGGER noncore/apps/dagger dagger.pro
CONFIG_DASHER inputmethods/dasher dasher.pro
CONFIG_DATEBOOK2 core/pim/datebook2 datebook2.pro
CONFIG_DATEBOOK core/pim/datebook datebook.pro
CONFIG_DATEBOOK_BIRTHDAYS_HOLIDAY core/pim/datebook/holiday/birthday birthdays.pro
CONFIG_DATEBOOK_CHRISTIAN_HOLIDAY core/pim/datebook/holiday/christian christian-holidays.pro
CONFIG_DATEBOOK_NATIONAL_HOLIDAY core/pim/datebook/holiday/national national-holidays.pro
CONFIG_DECO_FLAT noncore/decorations/flat flat.pro
CONFIG_DECO_LIQUID noncore/decorations/liquid liquid.pro
CONFIG_DECO_POLISHED noncore/decorations/polished polished.pro
CONFIG_DICTIONARY noncore/apps/dictionary dictionary.pro
CONFIG_DOCTAB noncore/settings/doctab doctab.pro
CONFIG_DRAWPAD noncore/graphics/drawpad drawpad.pro
CONFIG_DVORAK inputmethods/dvorak dvorak.pro
CONFIG_EMBEDDEDKONSOLE core/apps/embeddedkonsole embeddedkonsole.pro
CONFIG_EUROCONV noncore/tools/euroconv/ euroconv.pro
CONFIG_EXAMPLE_APPLET examples/applet applet.pro
CONFIG_EXAMPLE_BOARD examples/inputmethod inputmethod.pro
CONFIG_EXAMPLE_LIBOPIE2BLUEZ examples/opiebluez opiebluez.pro
CONFIG_EXAMPLE_LIBOPIE2CORE examples/opiecore opiecore.pro
CONFIG_EXAMPLE_LIBOPIE2DB examples/opiedb opiedb.pro
CONFIG_EXAMPLE_LIBOPIE2MM examples/opiemm opiemm.pro
CONFIG_EXAMPLE_LIBOPIE2NET examples/opienet opienet.pro
CONFIG_EXAMPLE_LIBOPIE2PIM examples/opiepim opiepim.pro
CONFIG_EXAMPLE_LIBOPIE2SECURITY examples/opiesecurity opiesecurity.pro
CONFIG_EXAMPLE_LIBOPIE2UI examples/opieui opieui.pro
CONFIG_EXAMPLE_MENU examples/menuapplet menuapplet.pro
CONFIG_EXAMPLE_VPN examples/networksettings networksettings.pro
CONFIG_FIFTEEN noncore/games/fifteen fifteen.pro
CONFIG_FILEBROWSER noncore/unsupported/filebrowser filebrowser.pro
CONFIG_FLAT noncore/styles/flat flat.pro
CONFIG_FORMATTER noncore/tools/formatter formatter.pro
CONFIG_FREETYPE freetype freetype.pro
CONFIG_FRESH noncore/styles/fresh fresh.pro
CONFIG_FTPLIB noncore/net/ftplib ftplib.pro
CONFIG_GO noncore/games/go go.pro
CONFIG_GSMTOOL noncore/unsupported/gsmtool gsmtool.pro
CONFIG_GUTENBROWSER noncore/apps/opie-gutenbrowser opie-gutenbrowser.pro
CONFIG_HANDWRITING inputmethods/handwriting handwriting.pro
CONFIG_HELPBROWSER core/apps/helpbrowser helpbrowser.pro
CONFIG_HOMEAPPLET core/applets/homeapplet homeapplet.pro
CONFIG_HOTPLUG_QCOP core/tools/hotplug-qcop hotplug-qcop.pro
CONFIG_INTERFACES noncore/settings/networksettings/interfaces interfaces.pro
CONFIG_IRDAAPPLET core/applets/irdaapplet irdaapplet.pro
CONFIG_JUMPX inputmethods/jumpx jumpx.pro
CONFIG_KBILL noncore/games/kbill kbill.pro
CONFIG_KCHECKERS noncore/games/kcheckers kcheckers.pro
CONFIG_KEYBOARD inputmethods/keyboard keyboard.pro
CONFIG_KEYHELPER noncore/applets/keyhelper keyhelper.pro
CONFIG_KEYPEBBLE noncore/comm/keypebble keypebble.pro
CONFIG_KEYVIEW development/keyview keyview.pro
CONFIG_KJUMPX inputmethods/kjumpx kjumpx.pro
CONFIG_KPACMAN noncore/games/kpacman kpacman.pro
CONFIG_LANGUAGE noncore/settings/language language.pro
CONFIG_LAUNCHER core/launcher server.pro
CONFIG_LAUNCHER-SETTINGS core/settings/launcher launcher.pro
CONFIG_LIBFFMPEG core/multimedia/opieplayer/libffmpeg libffmpeg.pro
CONFIG_LIBFLASH core/multimedia/opieplayer/libflash libflash.pro
CONFIG_LIBMAD core/multimedia/opieplayer/libmad libmad.pro
CONFIG_LIBMAIL noncore/unsupported/mail2/libmail libmail.pro
CONFIG_LIBMAILWRAPPER noncore/net/mail/libmailwrapper libmailwrapper.pro
CONFIG_LIBMPEG3 core/multimedia/opieplayer/libmpeg3 libmpeg3.pro
CONFIG_LIBOPIE2BLUEZ libopie2/opiebluez opiebluez.pro
CONFIG_LIBOPIE2CORE libopie2/opiecore opiecore.pro
CONFIG_LIBOPIE2DB libopie2/opiedb opiedb.pro
CONFIG_LIBOPIE2EXAMPLES libopie2/examples examples.pro
CONFIG_LIBOPIE2MM libopie2/opiemm opiemm.pro
CONFIG_LIBOPIE2NET libopie2/opienet opienet.pro
CONFIG_LIBOPIE2PIM libopie2/opiepim opiepim.pro
CONFIG_LIBOPIE2SECURITY libopie2/opiesecurity opiesecurity.pro
CONFIG_LIBOPIE2UI libopie2/opieui opieui.pro
CONFIG_LIBOPIETOOTH noncore/net/opietooth/lib lib.pro
CONFIG_LIBOPIE noncore/unsupported/libopie libopie.pro
CONFIG_LIBQPE library library.pro
CONFIG_LIBQPE-X11 x11/libqpe-x11 libqpe-x11.pro
CONFIG_LIBQRSYNC rsync rsync.pro
CONFIG_LIBQTAUX libqtaux libqtaux.pro
CONFIG_LIBSLCOMPAT libslcompat libslcompat.pro
CONFIG_LIBSQL libsql libsql.pro
CONFIG_LIBTREMOR core/multimedia/opieplayer/vorbis/tremor tremor.pro
CONFIG_LIBTREMORPLUGIN core/multimedia/opieplayer/vorbis libtremor.pro
CONFIG_LIGHT-AND-POWER core/settings/light-and-power light-and-power.pro
CONFIG_LIQUID noncore/styles/liquid liquid.pro
CONFIG_LOCKAPPLET core/applets/lockapplet lockapplet.pro
CONFIG_LOGOUTAPPLET core/applets/logoutapplet logoutapplet.pro
CONFIG_MAIL3 noncore/net/mail mail.pro
CONFIG_MAILAPPLET noncore/net/mail/taskbarapplet taskbarapplet.pro
CONFIG_MAILIT noncore/unsupported/mailit mailit.pro
CONFIG_MAIN_TAB_EXAMPLE examples/main-tab main-tab.pro
CONFIG_MEDIUMMOUNT noncore/settings/mediummount mediummount.pro
CONFIG_MEMORYAPPLET noncore/applets/memoryapplet memoryapplet.pro
CONFIG_METAL noncore/styles/metal metal.pro
CONFIG_MINDBREAKER noncore/games/mindbreaker mindbreaker.pro
CONFIG_MINESWEEP noncore/games/minesweep minesweep.pro
CONFIG_MOBILEMSG noncore/unsupported/mobilemsg mobilemsg.pro
CONFIG_MODPLUG core/multimedia/opieplayer/modplug modplug.pro
CONFIG_MULTIAUTH_BLUEPING noncore/securityplugins/blueping bluepingplugin.pro
CONFIG_MULTIAUTH_DUMMY noncore/securityplugins/dummy dummyplugin.pro
CONFIG_MULTIAUTH_NOTICE noncore/securityplugins/notice noticeplugin.pro
CONFIG_MULTIAUTH_PIN noncore/securityplugins/pin pinplugin.pro
CONFIG_MULTIKEYAPPLET core/applets/multikeyapplet multikeyapplet.pro
CONFIG_MULTIKEY inputmethods/multikey multikey.pro
CONFIG_NETSYSTEMTIME noncore/settings/netsystemtime netsystemtime.pro
CONFIG_NETWORKAPPLET noncore/applets/networkapplet networkapplet.pro
CONFIG_NETWORKSETUP noncore/settings/networksettings networksettings.pro
CONFIG_NOTESAPPLET noncore/applets/notesapplet notesapplet.pro
CONFIG_NS2BT noncore/settings/networksettings2/bluetooth bluetooth.pro
CONFIG_NS2GPRS noncore/settings/networksettings2/gprs GPRS.pro
CONFIG_NS2CABLE noncore/settings/networksettings2/cable cable.pro
CONFIG_NS2CORE noncore/settings/networksettings2/networksettings2 networksettings2.pro
CONFIG_NS2OPIETOOTH noncore/settings/networksettings2/opietooth2 opietooth2.pro
CONFIG_NS2OPIETOOTHAPPLET noncore/settings/networksettings2/opietooth2_applet opietooth2_applet.pro
CONFIG_NS2IRDA noncore/settings/networksettings2/irda irda.pro
CONFIG_NS2LANCARD noncore/settings/networksettings2/lancard lancard.pro
CONFIG_NS2MODEM noncore/settings/networksettings2/modem modem.pro
CONFIG_NS2NETWORK noncore/settings/networksettings2/network network.pro
CONFIG_NS2 noncore/settings/networksettings2 networksettings.pro
CONFIG_NS2PPP noncore/settings/networksettings2/ppp ppp.pro
CONFIG_NS2PROFILE noncore/settings/networksettings2/profile profile.pro
CONFIG_NS2USB noncore/settings/networksettings2/usb usb.pro
CONFIG_NS2VPN noncore/settings/networksettings2/vpn vpn.pro
CONFIG_NS2WLAN noncore/settings/networksettings2/wlan wlan.pro
CONFIG_OAPP core/apps/oapp oapp.pro
CONFIG_OBEX core/obex obex.pro
CONFIG_ODICT noncore/apps/odict odict.pro
CONFIG_OIPKG noncore/unsupported/oipkg oipkg.pro
CONFIG_OPIEALARM core/opiealarm opiealarm.pro
CONFIG_OPIE-CONSOLE noncore/apps/opie-console opie-console.pro
CONFIG_OPIE_EYE noncore/graphics/opie-eye phunk_view.pro
CONFIG_OPIE_EYE_SLAVE noncore/graphics/opie-eye/slave slave.pro
CONFIG_OPIEFTP noncore/net/opieftp opieftp.pro
CONFIG_OPIEIRC noncore/net/opieirc opieirc.pro
CONFIG_OPIE-LOGIN core/opie-login opie-login.pro
CONFIG_OPIEMAIL2 noncore/unsupported/mail2 mail.pro
CONFIG_OPIEPLAYER2 noncore/multimedia/opieplayer2 opieplayer2.pro
CONFIG_OPIEPLAYER3 noncore/multimedia/opieplayer3 opieplayer3.pro
CONFIG_OPIEPLAYER core/multimedia/opieplayer opieplayer.pro
CONFIG_OPIE-RDESKTOP noncore/net/opierdesktop opierdesktop.pro
CONFIG_OPIE-READER noncore/apps/opie-reader opie-reader.pro
CONFIG_OPIE-READER-FLITEDYN noncore/apps/opie-reader/FliteDyn FliteDyn.pro
CONFIG_OPIE-READER-FLITEDYN16 noncore/apps/opie-reader/FliteDyn16 FliteDyn16.pro
CONFIG_OPIEREC noncore/multimedia/opierec opierec.pro
+CONFIG_OPIESMB noncore/net/opie-smb opie-smb.pro
CONFIG_OPIE-SHEET noncore/apps/opie-sheet opie-sheet.pro
CONFIG_OPIE-SH noncore/tools/opie-sh opie-sh.pro
CONFIG_OPIETOOTH-APPLET noncore/net/opietooth/applet applet.pro
CONFIG_OPIETOOTH-MANAGER noncore/net/opietooth/manager manager.pro
CONFIG_OPIE-WRITE noncore/apps/opie-write opie-write.pro
CONFIG_OSEARCH core/pim/osearch osearch.pro
CONFIG_OXYGEN noncore/apps/oxygen oxygen.pro
CONFIG_PACKAGEMANAGER noncore/settings/packagemanager packagemanager.pro
CONFIG_PARASHOOT noncore/games/parashoot parashoot.pro
CONFIG_PCMCIA-APPLET noncore/applets/pcmcia pcmcia.pro
CONFIG_PHASE noncore/styles/phase phase.pro
CONFIG_PICKBOARD inputmethods/pickboard pickboard.pro
CONFIG_PIMCONVERTER noncore/tools/pimconverter converter.pro
CONFIG_POWERCHORD noncore/multimedia/powerchord powerchord.pro
CONFIG_PPP noncore/settings/networksettings/ppp ppp.pro
CONFIG_PYQUICKLAUNCH-APPLET noncore/applets/pyquicklaunch pyquicklaunch.pro
CONFIG_PYQUICKLAUNCHER noncore/tools/pyquicklauncher pyquicklauncher.pro
CONFIG_PYTHON-EXAMPLES examples/python bla.pro
CONFIG_QASHMONEY noncore/unsupported/qashmoney qashmoney.pro
CONFIG_QASTEROIDS noncore/games/qasteroids qasteroids.pro
CONFIG_QCOP core/apps/qcop qcop.pro
CONFIG_QPDF noncore/unsupported/qpdf qpdf.pro
CONFIG_QSS core/apps/qss qss.pro
CONFIG_QUICKLAUNCHER core/tools/quicklauncher quicklauncher.pro
CONFIG_QWS core/qws qws.pro
CONFIG_REMOTE noncore/tools/remote remote.pro
CONFIG_RESTARTAPPLET2 core/applets/restartapplet2 restartapplet2.pro
CONFIG_RESTARTAPPLET core/applets/restartapplet restartapplet.pro
CONFIG_ROTATEAPPLET core/applets/rotateapplet rotateapplet.pro
CONFIG_ROTATION noncore/settings/rotation rotation.pro
CONFIG_RUNAPPLET core/applets/runapplet runapplet.pro
CONFIG_SCREENSHOTAPPLET core/applets/screenshotapplet screenshotapplet.pro
CONFIG_SECURITY core/settings/security security.pro
CONFIG_MULTIAUTH_DEMO core/settings/security/demo multiauth.pro
CONFIG_SFCAVE noncore/games/sfcave sfcave.pro
CONFIG_SFCAVE-SDL noncore/games/sfcave-sdl sfcave-sdl.pro
CONFIG_SHOWIMG noncore/unsupported/showimg showimg.pro
CONFIG_SIMPLE_EXAMPLE examples/simple simple.pro
CONFIG_SIMPLE_ICON examples/simple-icon simple-icon.pro
CONFIG_SIMPLE_MAIN examples/simple-main simple-main.pro
CONFIG_SIMPLE noncore/tools/calc2/simple simple.pro
CONFIG_SIMPLE_PIM examples/simple-pim simple-pim.pro
CONFIG_SINGLE single single.pro
CONFIG_SNAKE noncore/games/snake snake.pro
CONFIG_SOLITAIRE noncore/games/solitaire solitaire.pro
CONFIG_SOUND noncore/settings/sound sound.pro
CONFIG_SSHKEYS noncore/settings/sshkeys sshkeys.pro
CONFIG_SUSPENDAPPLET core/applets/suspendapplet suspendapplet.pro
CONFIG_SYMLINKER core/symlinker symlinker.pro
CONFIG_SYSINFO noncore/settings/sysinfo sysinfo.pro
CONFIG_TABLEVIEWER noncore/apps/tableviewer tableviewer.pro
CONFIG_TABMANAGER noncore/unsupported/tabmanager tabmanager.pro
CONFIG_TABOAPP core/apps/taboapp taboapp.pro
CONFIG_TEST libsql/test test.pro
CONFIG_TEST noncore/apps/opie-console/test test.pro
CONFIG_TETRIX noncore/games/tetrix tetrix.pro
CONFIG_TEXTEDIT core/apps/textedit textedit.pro
CONFIG_THEME noncore/styles/theme theme.pro
CONFIG_TICTAC noncore/games/tictac tictac.pro
CONFIG_TINYKATE noncore/apps/tinykate tinykate.pro
CONFIG_TODAY_ADDRESSBOOK core/pim/today/plugins/addressbook addressbook.pro
CONFIG_TODAY core/pim/today today.pro
CONFIG_TODAY_DATEBOOK core/pim/today/plugins/datebook datebook.pro
CONFIG_TODAY_EXAMPLE examples/todayplugin todayplugin.pro
CONFIG_TODAY_FORTUNE noncore/todayplugins/fortune fortune.pro
CONFIG_TODAY_MAIL core/pim/today/plugins/mail mail.pro
CONFIG_TODAY_STOCKTICKERLIB noncore/todayplugins/stockticker/stocktickerlib stocktickerlib.pro
CONFIG_TODAY_STOCKTICKER noncore/todayplugins/stockticker/stockticker stockticker.pro
CONFIG_TODAY_TODOLIST core/pim/today/plugins/todolist todolist.pro
CONFIG_TODAY_WEATHER noncore/todayplugins/weather weather.pro
CONFIG_TODO core/pim/todo todo.pro
CONFIG_TONLEITER noncore/multimedia/tonleiter tonleiter.pro
CONFIG_TRACKER noncore/multimedia/tracker tracker.pro
CONFIG_UBROWSER noncore/unsupported/ubrowser ubrowser.pro
CONFIG_UNIKEYBOARD inputmethods/unikeyboard unikeyboard.pro
CONFIG_USERMANAGER noncore/settings/usermanager usermanager.pro
CONFIG_VMEMO core/applets/vmemo vmemo.pro
CONFIG_VOLUMEAPPLET core/applets/volumeapplet volumeapplet.pro
CONFIG_VOLUMEAPPLET2 noncore/applets/volumeapplet2 volumeapplet2.pro
CONFIG_VTAPPLET core/applets/vtapplet vtapplet.pro
CONFIG_WAVPLUGIN core/multimedia/opieplayer/wavplugin wavplugin.pro
CONFIG_WEBSTYLE noncore/styles/web web.pro
CONFIG_WELLENREITER noncore/net/wellenreiter wellenreiter.pro
CONFIG_WIRELESSAPPLET noncore/applets/wirelessapplet wirelessapplet.pro
CONFIG_WLAN noncore/settings/networksettings/wlan wlan.pro
CONFIG_WORDGAME noncore/games/wordgame wordgame.pro
CONFIG_YATZEE noncore/games/oyatzee oyatzee.pro
CONFIG_ZKBAPPLET noncore/applets/zkbapplet zkbapplet.pro
CONFIG_ZLINES noncore/games/zlines zlines.pro
CONFIG_ZSAFE noncore/apps/zsafe zsafe.pro
CONFIG_ZSAME noncore/games/zsame zsame.pro
CONFIG_OPIESTUMBLER noncore/net/opiestumbler opiestumbler.pro
diff --git a/pics/opie-smb/opie-smb.png b/pics/opie-smb/opie-smb.png
new file mode 100644
index 0000000..0cf5d67
--- a/dev/null
+++ b/pics/opie-smb/opie-smb.png
Binary files differ