diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-22 19:31:25 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-22 19:31:25 +0000 |
commit | 6afd9d8dddbe9e450690e05d498a503c00333a5e (patch) | |
tree | ee3eaca74e8e33dd66f24f5fb6c1431d7a9ff429 /ksquirrel/sidebar/sq_treeviewmenu.cpp | |
download | ksquirrel-6afd9d8dddbe9e450690e05d498a503c00333a5e.tar.gz ksquirrel-6afd9d8dddbe9e450690e05d498a503c00333a5e.zip |
Added KDE3 version of ksquirrel photo manager
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ksquirrel@1094446 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ksquirrel/sidebar/sq_treeviewmenu.cpp')
-rw-r--r-- | ksquirrel/sidebar/sq_treeviewmenu.cpp | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/ksquirrel/sidebar/sq_treeviewmenu.cpp b/ksquirrel/sidebar/sq_treeviewmenu.cpp new file mode 100644 index 0000000..120a0b3 --- /dev/null +++ b/ksquirrel/sidebar/sq_treeviewmenu.cpp @@ -0,0 +1,196 @@ +#include <qpoint.h> +#include <qwidget.h> +#include <qstylesheet.h> + +#include <klocale.h> +#include <kurl.h> +#include <kio/job.h> +#include <kpropertiesdialog.h> +#include <kinputdialog.h> +#include <kmessagebox.h> + +#include "sq_treeviewmenu.h" +#include "ksquirrel.h" +#include "sq_iconloader.h" + +SQ_TreeViewMenu::SQ_TreeViewMenu(QWidget *parent, const char *name) : KPopupMenu(parent, name) +{ + id_new = insertItem(SQ_IconLoader::instance()->loadIcon("folder_new", KIcon::Desktop, KIcon::SizeSmall), i18n("New folder..."), this, SLOT(slotDirectoryNew())); + insertSeparator(); + id_rename = insertItem(i18n("Rename"), this, SLOT(slotDirectoryRename())); + id_clear = insertItem(i18n("Clear contents"), this, SLOT(slotDirectoryClear())); + id_delete = insertItem(SQ_IconLoader::instance()->loadIcon("editdelete", KIcon::Desktop, KIcon::SizeSmall), i18n("Delete"), this, SLOT(slotDirectoryDelete())); + insertSeparator(); + id_prop = insertItem(i18n("Properties"), this, SLOT(slotDirectoryProperties())); +} + +SQ_TreeViewMenu::~SQ_TreeViewMenu() +{} + +void SQ_TreeViewMenu::reconnect(Element elem, QObject *receiver, const char *member) +{ + int id; + + if(elem == SQ_TreeViewMenu::New) + id = id_new; + else if(elem == SQ_TreeViewMenu::Delete) + id = id_delete; + else if(elem == SQ_TreeViewMenu::Rename) + id = id_rename; + else if(elem == SQ_TreeViewMenu::Clear) + id = id_clear; + else + id = id_prop; + + disconnectItem(id, 0, 0); + connectItem(id, receiver, member); +} + +void SQ_TreeViewMenu::updateDirActions(bool isdir, bool isroot) +{ + setItemEnabled(id_new, isdir); + setItemEnabled(id_clear, isdir); + + setItemEnabled(id_delete, !isroot); + setItemEnabled(id_rename, isdir && !isroot); +} + +void SQ_TreeViewMenu::slotDirectoryNew() +{ + if(!m_url.isEmpty()) + { + bool ok; + + QString mNewFilename = KInputDialog::getText(i18n("Create Subfolder"), + i18n("<p>Create new folder in <b>%1</b>:</p>").arg(QStyleSheet::escape(m_url.filename())), + QString::null, &ok, KSquirrel::app()); + + if(ok) + { + KURL dstURL = m_url; + dstURL.addPath(mNewFilename); + KIO::Job *job = KIO::mkdir(dstURL); + + connect(job, SIGNAL(result(KIO::Job*)), this, SLOT(slotDirectoryResult(KIO::Job *))); + } + } +} + +void SQ_TreeViewMenu::slotDirectoryRename() +{ + if(!m_url.isEmpty()) + { + KURL renameSrcURL = m_url; + bool ok; + + QString filename = QStyleSheet::escape(renameSrcURL.filename()); + + QString mNewFilename = KInputDialog::getText(i18n("Rename Folder"), + i18n("<p>Rename folder <b>%1</b> to:</p>").arg(filename), + renameSrcURL.filename(), &ok, KSquirrel::app()); + + if(ok) + { + KURL renameDstURL = renameSrcURL; + renameDstURL.setFileName(mNewFilename); + + KIO::Job *job = KIO::rename(renameSrcURL, renameDstURL, true); + + connect(job, SIGNAL(result(KIO::Job*)), this, SLOT(slotDirectoryResult(KIO::Job *))); + } + } +} + +void SQ_TreeViewMenu::slotDirectoryDelete() +{ + if(!m_url.isEmpty()) + { + QString dir = QStyleSheet::escape(m_url.path()); + + if(KMessageBox::questionYesNo(KSquirrel::app(), + "<qt>" + i18n("Are you sure you want to delete <b>%1</b>?").arg(dir) + "</qt>") == KMessageBox::No) + return; + + KIO::Job *job = KIO::del(m_url); + + connect(job, SIGNAL(result(KIO::Job*)), this, SLOT(slotDirectoryResult(KIO::Job *))); + } +} + +void SQ_TreeViewMenu::slotDirectoryClear() +{ + if(!m_url.isEmpty()) + { + urlstodel.clear(); + + if(KMessageBox::questionYesNo(KSquirrel::app(), + "<qt>" + i18n("Are you sure you want to delete contents of <b>%1</b>?").arg(m_url.path()) + "</qt>") == KMessageBox::No) + return; + + KIO::Job *job = KIO::listDir(m_url, false, true); + + connect(job, SIGNAL(entries(KIO::Job *, const KIO::UDSEntryList &)), this, SLOT(slotEntries(KIO::Job *, const KIO::UDSEntryList &))); + connect(job, SIGNAL(result(KIO::Job *)), this, SLOT(slotListResult(KIO::Job *))); + } +} + +void SQ_TreeViewMenu::slotEntries(KIO::Job *, const KIO::UDSEntryList &list) +{ + KIO::UDSEntryListConstIterator itEnd = list.end(); + QString suff; + KURL u; + + static const QString &dot = KGlobal::staticQString("."); + static const QString &dotdot = KGlobal::staticQString(".."); + + // go through list of KIO::UDSEntrys + for(KIO::UDSEntryListConstIterator it = list.begin(); it != itEnd; ++it) + { + KIO::UDSEntry entry = *it; + KIO::UDSEntry::ConstIterator itEnd = entry.end(); + + for(KIO::UDSEntry::ConstIterator it = entry.begin(); it != itEnd; ++it) + { + if((*it).m_uds == KIO::UDS_NAME) + { + suff = (*it).m_str; + + if(suff != dot && suff != dotdot) + { + u = m_url; + u.addPath(suff); + urlstodel.append(u); + } + + break; + } + } + } +} + +void SQ_TreeViewMenu::slotListResult(KIO::Job *job) +{ + if(!job) return; + + if(job->error()) + job->showErrorDialog(KSquirrel::app()); + else if(!urlstodel.isEmpty()) + { + KIO::Job *job = KIO::del(urlstodel); + connect(job, SIGNAL(result(KIO::Job *)), this, SLOT(slotDirectoryResult(KIO::Job *))); + } +} + +void SQ_TreeViewMenu::slotDirectoryResult(KIO::Job *job) +{ + if(job && job->error()) + job->showErrorDialog(KSquirrel::app()); +} + +void SQ_TreeViewMenu::slotDirectoryProperties() +{ + if(!m_url.isEmpty()) + (void)new KPropertiesDialog(m_url, KSquirrel::app()); +} + +#include "sq_treeviewmenu.moc" |