00001 #include <qhbox.h>
00002 #include <qpushbutton.h>
00003 #include <qlayout.h>
00004 #include <qlistview.h>
00005 #include <qlineedit.h>
00006
00007 #include <qpe/config.h>
00008
00009 #include "stringmanager.h"
00010
00011 using namespace Datebook;
00012
00013 StringManager::StringManager( const QString& str )
00014 : m_base( str ) {
00015 }
00016 StringManager::~StringManager() {
00017
00018 }
00019 void StringManager::add( const QString& str ) {
00020 ManagerTemplate<QString>::add(str, str);
00021 }
00022 bool StringManager::load() {
00023 Config qpe( "datebook-"+m_base );
00024 qpe.setGroup(m_base );
00025 QStringList list = qpe.readListEntry( "Names", 0x1f );
00026 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it )
00027 add( (*it) );
00028
00029 return true;
00030 }
00031 bool StringManager::save() {
00032 Config qpe( "datebook-"+m_base );
00033 qpe.setGroup(m_base);
00034 qpe.writeEntry( "Names", names(), 0x1f );
00035
00036 return false;
00037 }
00038 QString StringManager::baseName()const {
00039 return m_base;
00040 }
00041
00042
00043
00044 StringManagerDialog::StringManagerDialog(const StringManager& man)
00045 : QDialog(0, 0, true ) {
00046 m_base = man.baseName();
00047
00048 QVBoxLayout* lay = new QVBoxLayout( this );
00049
00050 m_view = new QListView( this );
00051 m_view->addColumn( QString::null );
00052 lay->addWidget( m_view );
00053
00054 QHBox* box = new QHBox( this );
00055
00056 QPushButton* b = new QPushButton( box );
00057 b->setText( tr("&Add") );
00058 connect(b, SIGNAL(clicked() ), this, SLOT(slotAdd() ) );
00059
00060 b = new QPushButton( box );
00061 b->setText( tr("&Remove") );
00062 connect(b, SIGNAL(clicked() ), this, SLOT(slotRemove() ) );
00063
00064 b = new QPushButton( box );
00065 b->setText( tr("Rename") );
00066 connect(b, SIGNAL(clicked() ), this, SLOT(slotRename() ) );
00067
00068 lay->addWidget( box );
00069
00070 init( man );
00071 }
00072 StringManagerDialog::~StringManagerDialog() {
00073 }
00074 StringManager StringManagerDialog::manager()const {
00075 StringManager man(m_base );
00076 QListViewItemIterator it(m_view);
00077 while ( it.current() ) {
00078 man.add( it.current()->text(0) );
00079 ++it;
00080 }
00081
00082 return man;
00083 }
00084 void StringManagerDialog::init( const StringManager& _man ) {
00085 QStringList::Iterator it;
00086 QStringList man = _man.names();
00087 for ( it = man.begin(); it != man.end(); ++it )
00088 (void)new QListViewItem( m_view, (*it) );
00089
00090 }
00091
00092 namespace {
00093 class InputDialog : public QDialog{
00094 public:
00095 InputDialog( const QString& text );
00096 ~InputDialog();
00097
00098 QString text()const;
00099 private:
00100 QLineEdit* m_lneEdit;
00101 };
00102 InputDialog::InputDialog(const QString& text )
00103 : QDialog(0, 0, true ) {
00104 m_lneEdit = new QLineEdit( this );
00105 m_lneEdit->setText( text );
00106 }
00107 InputDialog::~InputDialog() {
00108 }
00109 QString InputDialog::text() const{
00110 return m_lneEdit->text();
00111 }
00112
00113 }
00114
00115 void StringManagerDialog::slotAdd() {
00116 InputDialog dlg(QString::null);
00117 dlg.setCaption( tr("Add") );
00118 if ( dlg.exec() == QDialog::Accepted )
00119 (void)new QListViewItem( m_view, dlg.text() );
00120
00121 }
00122 void StringManagerDialog::slotRename() {
00123 QListViewItem* item = m_view->currentItem();
00124 if (!item) return;
00125
00126 InputDialog dlg(item->text(0) );
00127 dlg.setCaption( tr("Rename") );
00128
00129 if ( dlg.exec() == QDialog::Accepted )
00130 item->setText( 0, dlg.text() );
00131 }
00132 void StringManagerDialog::slotRemove() {
00133 QListViewItem* item = m_view->currentItem();
00134 if (!item) return;
00135
00136 m_view->takeItem( item );
00137 delete item;
00138 }