#
# Machekku Auto Copy on Select
#
# Version: 0.2
# Date: 2005-03-30
#
# http://machekku.uaznia.net/jabber/psi/patches/
#
# common.h | 3 +++
# msgmle.cpp | 24 ++++++++++++++++++++++++
# msgmle.h | 4 ++++
# options/opt_advanced-ui.ui | 8 ++++++++
# options/opt_advanced.cpp | 8 ++++++++
# psi_profiles.cpp | 3 +++
# 6 files changed, 50 insertions(+)
#
diff -X exclude -x src.pro -Naru psi_cvs-2005.03.29/psi/src/common.h psi-2005.03.29-autocopy/psi/src/common.h
--- psi_cvs-2005.03.29/psi/src/common.h Mon Feb 28 16:45:12 2005
+++ psi-2005.03.29-autocopy/psi/src/common.h Wed Mar 30 00:36:40 2005
@@ -91,6 +91,9 @@
bool alwaysOnTop, noAwaySound, noAwayPopup, noUnlistedPopup, rosterAnim, autoVersion, autoVCardOnLogin, xmlConsoleOnLogin;
bool useDock, dockDCstyle, dockHideMW, dockToolMW, isWMDock;
bool smallChats, chatLineEdit, showJoins, useTabs, putTabsAtBottom, autoRosterSize, autoResolveNicksOnAdd;
+ bool autoCopy; // although this setting is ignored under linux,
+ // it is preserved in case user uses the same config file on different platforms
+
bool oldSmallChats; //Filthy hack, see chat code.
int delChats, browser;
diff -X exclude -x src.pro -Naru psi_cvs-2005.03.29/psi/src/msgmle.cpp psi-2005.03.29-autocopy/psi/src/msgmle.cpp
--- psi_cvs-2005.03.29/psi/src/msgmle.cpp Sat Mar 5 09:13:48 2005
+++ psi-2005.03.29-autocopy/psi/src/msgmle.cpp Wed Mar 30 00:04:46 2005
@@ -37,6 +37,11 @@
setReadOnly(true);
setUndoRedoEnabled(false);
setHScrollBarMode(QScrollView::AlwaysOff);
+
+#ifndef Q_WS_X11 // linux has this feature built-in
+ connect(this, SIGNAL(copyAvailable(bool)), SLOT(autoCopy(bool)));
+#endif
+
}
ChatView::~ChatView()
@@ -78,6 +83,25 @@
QTextEdit::resizeEvent(e);
}
+
+/*!
+ Copies any selected text (from selection 0) to the clipboard
+ if option.autoCopy is TRUE, \a copyAvailable is TRUE
+ and ChatView is in read-only mode.
+ In any other case it does nothing.
+
+ This slot is connected with copyAvailable(bool) signal
+ in ChatView's constructor.
+
+ \sa copyAvailable()
+*/
+
+void ChatView::autoCopy(bool copyAvailable)
+{
+ if ( isReadOnly() && copyAvailable && option.autoCopy ) {
+ copy();
+ }
+}
//----------------------------------------------------------------------------
// ChatEdit
diff -X exclude -x src.pro -Naru psi_cvs-2005.03.29/psi/src/msgmle.h psi-2005.03.29-autocopy/psi/src/msgmle.h
--- psi_cvs-2005.03.29/psi/src/msgmle.h Sat Mar 5 09:13:48 2005
+++ psi-2005.03.29-autocopy/psi/src/msgmle.h Wed Mar 30 00:05:06 2005
@@ -25,6 +25,7 @@
class ChatView : public PsiTextView
{
+ Q_OBJECT
public:
ChatView(QWidget *parent, const char *name = 0);
~ChatView();
@@ -34,6 +35,9 @@
bool focusNextPrevChild(bool next);
void keyPressEvent(QKeyEvent *);
void resizeEvent(QResizeEvent *);
+
+protected slots:
+ void autoCopy(bool copyAvailable);
};
class ChatEdit : public PsiTextView
diff -X exclude -x src.pro -Naru psi_cvs-2005.03.29/psi/src/options/opt_advanced-ui.ui psi-2005.03.29-autocopy/psi/src/options/opt_advanced-ui.ui
--- psi_cvs-2005.03.29/psi/src/options/opt_advanced-ui.ui Wed Oct 20 10:31:40 2004
+++ psi-2005.03.29-autocopy/psi/src/options/opt_advanced-ui.ui Tue Mar 29 23:16:08 2005
@@ -40,6 +40,14 @@
+ ck_autocopy
+
+
+ Automatically copy selected text to clipboad
+
+
+
+
ck_grabUrls
diff -X exclude -x src.pro -Naru psi_cvs-2005.03.29/psi/src/options/opt_advanced.cpp psi-2005.03.29-autocopy/psi/src/options/opt_advanced.cpp
--- psi_cvs-2005.03.29/psi/src/options/opt_advanced.cpp Wed Oct 20 10:31:40 2004
+++ psi-2005.03.29-autocopy/psi/src/options/opt_advanced.cpp Wed Mar 30 00:25:42 2005
@@ -32,9 +32,15 @@
w = new OptAdvancedUI();
OptAdvancedUI *d = (OptAdvancedUI *)w;
+#ifdef Q_WS_X11 // auto-copy is a built-in feature on linux, we don't want user to use our own one
+ d->ck_autocopy->hide();
+#endif
+
QWhatsThis::add(d->ck_messageevents,
tr("Enables the sending and requesting of message events such as "
"'Contact is Typing', ..."));
+ QWhatsThis::add(d->ck_autocopy,
+ tr("Check this option if you want the selected text in incoming messages and chat log to be automatically copied to clipboard"));
QWhatsThis::add(d->ck_singleclick,
tr("Normally, a double-click on a contact will invoke the default action."
" Check this option if you'd rather invoke with a single-click."));
@@ -74,6 +80,7 @@
OptAdvancedUI *d = (OptAdvancedUI *)w;
opt->messageEvents = d->ck_messageevents->isChecked();
+ opt->autoCopy = d->ck_autocopy->isChecked();
opt->singleclick = d->ck_singleclick->isChecked();
opt->jidComplete = d->ck_jidComplete->isChecked();
opt->grabUrls = d->ck_grabUrls->isChecked();
@@ -95,6 +102,7 @@
OptAdvancedUI *d = (OptAdvancedUI *)w;
d->ck_messageevents->setChecked( opt->messageEvents );
+ d->ck_autocopy->setChecked( opt->autoCopy );
d->ck_singleclick->setChecked( opt->singleclick );
d->ck_jidComplete->setChecked( opt->jidComplete );
d->ck_grabUrls->setChecked( opt->grabUrls );
diff -X exclude -x src.pro -Naru psi_cvs-2005.03.29/psi/src/psi_profiles.cpp psi-2005.03.29-autocopy/psi/src/psi_profiles.cpp
--- psi_cvs-2005.03.29/psi/src/psi_profiles.cpp Wed Mar 16 13:42:42 2005
+++ psi-2005.03.29-autocopy/psi/src/psi_profiles.cpp Tue Mar 29 23:25:00 2005
@@ -405,6 +405,7 @@
prefs.autoResolveNicksOnAdd = false;
prefs.chatBgImage = "";
prefs.rosterBgImage = "";
+ prefs.autoCopy = false;
prefs.sp.clear();
prefs.sp.set(QObject::tr("Away from desk"), QObject::tr("I am away from my desk. Leave a message."));
@@ -801,6 +802,7 @@
p_misc.appendChild(textTag(doc, "messageEvents", prefs.messageEvents));
p_misc.appendChild(textTag(doc, "lastPath", prefs.lastPath));
p_misc.appendChild(textTag(doc, "lastSavePath", prefs.lastSavePath));
+ p_misc.appendChild(textTag(doc, "autoCopy", prefs.autoCopy));
}
{
QDomElement p_dock = doc.createElement("dock");
@@ -1349,6 +1351,7 @@
readBoolEntry(tag, "messageEvents", &prefs.messageEvents);
readEntry(tag, "lastPath", &prefs.lastPath);
readEntry(tag, "lastSavePath", &prefs.lastSavePath);
+ readBoolEntry(tag, "autoCopy", &prefs.autoCopy);
}
tag = findSubTag(p_general, "dock", &found);