summaryrefslogtreecommitdiffstats
path: root/konversation/src/dccresumedialog.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-19 18:29:46 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-19 18:29:46 +0000
commitee0d2e6e1967294f4a62da1840b0ffdaa3124a2d (patch)
tree5c150db3c91a190b4911f19aeec9b1b2163c0c53 /konversation/src/dccresumedialog.cpp
downloadkonversation-ee0d2e6e1967294f4a62da1840b0ffdaa3124a2d.tar.gz
konversation-ee0d2e6e1967294f4a62da1840b0ffdaa3124a2d.zip
Added old abandoned KDE3 version of Konversation
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/konversation@1092922 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'konversation/src/dccresumedialog.cpp')
-rw-r--r--konversation/src/dccresumedialog.cpp198
1 files changed, 198 insertions, 0 deletions
diff --git a/konversation/src/dccresumedialog.cpp b/konversation/src/dccresumedialog.cpp
new file mode 100644
index 0000000..b8376b8
--- /dev/null
+++ b/konversation/src/dccresumedialog.cpp
@@ -0,0 +1,198 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2004 Dario Abatianni <eisfuchs@tigress.com>
+ Copyright (C) 2004 Shintaro Matsuoka <shin@shoegazed.org>
+*/
+
+#include "dccresumedialog.h"
+#include "dcctransferrecv.h"
+
+#include <qhbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qvbox.h>
+
+#include <kdebug.h>
+#include <klocale.h>
+#include <kurl.h>
+#include <kurlrequester.h>
+
+
+DccResumeDialog::ReceiveAction DccResumeDialog::ask(DccTransferRecv* item, const QString& message, int enabledActions, ReceiveAction defaultAction)
+{
+ int enabledButtonCodes = 0;
+ KDialogBase::ButtonCode defaultButtonCode = KDialogBase::Ok;
+
+ if(enabledActions & RA_Rename || enabledActions & RA_Overwrite)
+ enabledButtonCodes |= KDialogBase::Ok;
+ if(enabledActions & RA_Resume)
+ enabledButtonCodes |= KDialogBase::User1;
+ if(enabledActions & RA_Cancel)
+ enabledButtonCodes |= KDialogBase::Cancel;
+
+ if(defaultAction == RA_Rename || defaultAction == RA_Overwrite)
+ defaultButtonCode = KDialogBase::Ok;
+ else if(defaultAction == RA_Resume)
+ defaultButtonCode = KDialogBase::User1;
+ else if(defaultAction == RA_Cancel)
+ defaultButtonCode = KDialogBase::Cancel;
+
+ DccResumeDialog dlg(item, i18n("DCC Receive Question"), message, enabledActions, enabledButtonCodes, defaultButtonCode);
+ dlg.exec();
+
+ ReceiveAction ra = dlg.m_selectedAction;
+
+ if(ra == RA_Rename)
+ item->setFileURL( dlg.m_urlreqFileURL->url() );
+
+ return ra;
+}
+
+DccResumeDialog::DccResumeDialog(DccTransferRecv* item, const QString& caption, const QString& message, int enabledActions, int enabledButtonCodes,
+ KDialogBase::ButtonCode defaultButtonCode)
+: KDialogBase(0, "dcc_resume_dialog", true, caption, enabledButtonCodes, defaultButtonCode, true)
+, m_item(item)
+, m_enabledActions(enabledActions)
+, m_selectedAction(RA_Cancel)
+{
+ if(enabledButtonCodes & KDialogBase::User1)
+ setButtonText(KDialogBase::User1, i18n("&Resume"));
+
+ QFrame* page = new QFrame(this);
+ QVBoxLayout* pageLayout = new QVBoxLayout(page);
+ pageLayout->setSpacing(spacingHint());
+ setMainWidget(page);
+
+ QLabel* labelMessage = new QLabel(page);
+ labelMessage->setText(message);
+
+ m_urlreqFileURL = new KURLRequester(m_item->getFileURL().prettyURL(), page);
+ connect(m_urlreqFileURL, SIGNAL(textChanged(const QString&)), this, SLOT(updateDialogButtons()));
+
+ pageLayout->addWidget(labelMessage);
+ pageLayout->addWidget(m_urlreqFileURL);
+
+ if(m_enabledActions & RA_Rename)
+ {
+ QFrame* filePathToolsFrame = new QFrame(page);
+ QHBoxLayout* filePathToolsLayout = new QHBoxLayout(filePathToolsFrame);
+ filePathToolsLayout->setSpacing(spacingHint());
+
+ QPushButton* btnDefaultName = new QPushButton(i18n("O&riginal Filename"),filePathToolsFrame);
+ QPushButton* btnSuggestNewName = new QPushButton(i18n("Suggest &New Filename"),filePathToolsFrame);
+ filePathToolsLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding));
+ filePathToolsLayout->addWidget(btnDefaultName);
+ filePathToolsLayout->addWidget(btnSuggestNewName);
+ connect(btnSuggestNewName, SIGNAL(clicked()), this, SLOT(suggestNewName()));
+ connect(btnDefaultName, SIGNAL(clicked()), this, SLOT(setDefaultName()));
+
+ pageLayout->addWidget(filePathToolsFrame);
+
+ }
+
+ updateDialogButtons();
+ setInitialSize(QSize(500, sizeHint().height()));
+
+}
+
+DccResumeDialog::~DccResumeDialog()
+{
+}
+
+void DccResumeDialog::slotOk()
+{
+ if(m_item->getFileURL() == m_urlreqFileURL->url())
+ m_selectedAction = RA_Overwrite;
+ else
+ m_selectedAction = RA_Rename;
+ KDialogBase::slotOk();
+}
+
+void DccResumeDialog::slotUser1()
+{
+ m_selectedAction = RA_Resume;
+ done(KDialogBase::User1);
+}
+
+void DccResumeDialog::slotCancel()
+{
+ m_selectedAction = RA_Cancel;
+ KDialogBase::slotCancel();
+}
+
+void DccResumeDialog::updateDialogButtons() // slot
+{
+ if(m_item->getFileURL() == m_urlreqFileURL->url())
+ {
+ setButtonText(KDialogBase::Ok, i18n("&Overwrite"));
+ enableButton(KDialogBase::Ok, m_enabledActions & RA_Overwrite);
+ enableButton(KDialogBase::User1, true);
+ }
+ else
+ {
+ setButtonText(KDialogBase::Ok, i18n("R&ename"));
+ enableButton(KDialogBase::Ok, m_enabledActions & RA_Rename);
+ enableButton(KDialogBase::User1, false);
+ }
+}
+
+// FIXME: kio-fy me!
+// taken and adapted from kio::renamedlg.cpp
+void DccResumeDialog::suggestNewName() // slot
+{
+ QString dotSuffix, suggestedName;
+ QString basename = m_urlreqFileURL->url().section("/", -1);
+ KURL baseURL(m_urlreqFileURL->url().section("/", 0, -2));
+
+ int index = basename.find( '.' );
+ if ( index != -1 )
+ {
+ dotSuffix = basename.mid( index );
+ basename.truncate( index );
+ }
+
+ int pos = basename.findRev( '_' );
+ if(pos != -1 )
+ {
+ QString tmp = basename.mid( pos+1 );
+ bool ok;
+ int number = tmp.toInt( &ok );
+ if ( !ok ) // ok there is no number
+ {
+ suggestedName = basename + '1' + dotSuffix;
+ }
+ else
+ {
+ // yes there's already a number behind the _ so increment it by one
+ basename.replace( pos+1, tmp.length(), QString::number(number+1) );
+ suggestedName = basename + dotSuffix;
+ }
+ }
+ else // no underscore yet
+ suggestedName = basename + "_1" + dotSuffix ;
+
+ // Check if suggested name already exists
+ bool exists = false;
+ // TODO: network transparency. However, using NetAccess from a modal dialog
+ // could be a problem, no? (given that it uses a modal widget itself....)
+ if ( baseURL.isLocalFile() )
+ exists = QFileInfo( baseURL.path(+1) + suggestedName ).exists();
+
+ m_urlreqFileURL->setURL( baseURL.path(+1) + suggestedName );
+
+ if ( exists ) // already exists -> recurse
+ suggestNewName();
+}
+
+void DccResumeDialog::setDefaultName() // slot
+{
+ m_urlreqFileURL->setURL(m_item->getFileURL().prettyURL());
+}
+
+#include "dccresumedialog.moc"