summaryrefslogtreecommitdiffstats
path: root/src/altitemelement.cpp
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2024-08-09 14:47:08 +0300
committerMavridis Philippe <mavridisf@gmail.com>2024-08-09 14:47:08 +0300
commit47becbedc6788937ab25df5220f0bf25291b62e8 (patch)
tree8ece1fe748e9da588a7162596aaa75e47ac3a0f9 /src/altitemelement.cpp
downloadtdealternatives-47becbedc6788937ab25df5220f0bf25291b62e8.tar.gz
tdealternatives-47becbedc6788937ab25df5220f0bf25291b62e8.zip
Initial commit
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'src/altitemelement.cpp')
-rw-r--r--src/altitemelement.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/altitemelement.cpp b/src/altitemelement.cpp
new file mode 100644
index 0000000..63e9b00
--- /dev/null
+++ b/src/altitemelement.cpp
@@ -0,0 +1,118 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Mario Bensi *
+ * nef@ipsquad.net *
+ * *
+ * 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. *
+ * *
+ * 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+
+#include "altitemelement.h"
+#include "altcontroller.h"
+#include "altparser.h"
+
+#include <qtimer.h>
+#include <klocale.h>
+#include <kdebug.h>
+/******************************* AltItemElement ********************/
+
+AltItemElement::AltItemElement(KListView *parent, Alternative *alternative)
+: QCheckListItem(parent, "", QCheckListItem::RadioButton),
+ m_alt(alternative),
+ m_parent(parent),
+ m_bisBroken(alternative->isBroken()),
+ m_path(alternative->getPath())
+{
+ setOn(alternative->isSelected());
+ setEnabled(!m_bisBroken);
+ m_desc = "";
+}
+
+AltItemElement::~AltItemElement()
+{
+ delete m_alt;
+}
+
+
+void AltItemElement::searchDescription()
+{
+ QString exec = m_path;
+ int posSlash = exec.findRev("/");
+
+ if (posSlash != -1)
+ {
+ exec.remove(0, posSlash+1);
+ }
+
+ if (!exec.isEmpty())
+ {
+ KProcess *procdesc = new KProcess();
+ *procdesc << "whatis";
+ *procdesc << exec;
+
+ connect(procdesc, SIGNAL(receivedStdout(KProcess *, char *, int)), this,
+ SLOT(slotGetDescription(KProcess *, char *, int)));
+ //connect(procdesc, SIGNAL( receivedStderr(KProcess *, char *, int) ), this,
+ // SLOT(slotGetDescription(KProcess *, char *, int)));
+ connect(procdesc, SIGNAL( processExited(KProcess *)), this,
+ SLOT(slotDescriptionTermined(KProcess *)));
+ procdesc->start(KProcess::NotifyOnExit,/*KProcess::Block,*/ KProcess::AllOutput);
+ }
+}
+
+
+void AltItemElement::slotDescriptionTermined(KProcess *proc)
+{
+ if (!proc->exitStatus())
+ {
+ int pos = m_desc.find("\n");
+ if (pos != -1)
+ {
+ m_desc.truncate(pos);
+ }
+
+ pos = m_desc.find("]");
+ if (pos != -1)
+ {
+ m_desc.remove(0, pos+1);
+ }
+
+ pos = m_desc.find(")");
+ if (pos != -1)
+ {
+ m_desc.remove(0, pos+1);
+ }
+
+ pos = m_desc.find("-");
+ if (pos != -1)
+ {
+ m_desc.remove(0, pos+2);
+ }
+ }
+ else
+ {
+ m_desc = i18n( "no description" );
+ }
+ setText( 3, m_desc);
+}
+
+void AltItemElement::slotGetDescription(KProcess *, char *buffer, int buflen)
+{
+ m_desc += QString::fromLatin1(buffer, buflen);
+}
+
+
+
+#include "altitemelement.moc"