[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kate] part/utils: print: add placeholders in context menu of
From:       Dominik Haumann <dhdev () gmx ! de>
Date:       2011-08-11 12:56:39
Message-ID: 20110811125639.CE9F9A60A4 () git ! kde ! org
[Download RAW message or body]

Git commit d05f15c9e3ea2c55aba05666b9b11ebe7bf50f84 by Dominik Haumann.
Committed on 11/08/2011 at 14:29.
Pushed by dhaumann into branch 'master'.

print: add placeholders in context menu of header & footer

Now, there are several ways to know that placeholders are available:
1. use What's This on the line edits
2. use context menu > Add Separator...
That should be enough.

BUG: 56077

M  +60   -0    part/utils/kateprinter.cpp
M  +1    -0    part/utils/kateprinter.h

http://commits.kde.org/kate/d05f15c9e3ea2c55aba05666b9b11ebe7bf50f84

diff --git a/part/utils/kateprinter.cpp b/part/utils/kateprinter.cpp
index 0197f4c..7a6599c 100644
--- a/part/utils/kateprinter.cpp
+++ b/part/utils/kateprinter.cpp
@@ -804,6 +804,13 @@ KatePrintHeaderFooter::KatePrintHeaderFooter( QWidget *parent )
   leHeaderRight = new KLineEdit( hbHeaderFormat );
   lHeaderFormat->setBuddy( leHeaderLeft );
 
+  leHeaderLeft->setContextMenuPolicy(Qt::CustomContextMenu);
+  leHeaderCenter->setContextMenuPolicy(Qt::CustomContextMenu);
+  leHeaderRight->setContextMenuPolicy(Qt::CustomContextMenu);
+  connect(leHeaderLeft, SIGNAL(customContextMenuRequested(QPoint)), this, \
SLOT(showContextMenu(QPoint))); +  connect(leHeaderCenter, \
SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); +  \
connect(leHeaderRight, SIGNAL(customContextMenuRequested(QPoint)), this, \
SLOT(showContextMenu(QPoint))); +
   grid->addWidget(new QLabel( i18n("Colors:"), gbHeader ), 1, 0);
 
   KHBox *hbHeaderColors = new KHBox( gbHeader );
@@ -833,6 +840,13 @@ KatePrintHeaderFooter::KatePrintHeaderFooter( QWidget *parent )
   leFooterCenter = new KLineEdit( hbFooterFormat );
   leFooterRight = new KLineEdit( hbFooterFormat );
   lFooterFormat->setBuddy( leFooterLeft );
+  
+  leFooterLeft->setContextMenuPolicy(Qt::CustomContextMenu);
+  leFooterCenter->setContextMenuPolicy(Qt::CustomContextMenu);
+  leFooterRight->setContextMenuPolicy(Qt::CustomContextMenu);
+  connect(leFooterLeft, SIGNAL(customContextMenuRequested(QPoint)), this, \
SLOT(showContextMenu(QPoint))); +  connect(leFooterCenter, \
SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); +  \
connect(leFooterRight, SIGNAL(customContextMenuRequested(QPoint)), this, \
SLOT(showContextMenu(QPoint)));  
   grid->addWidget(new QLabel( i18n("Colors:"), gbFooter ), 1, 0);
 
@@ -970,6 +984,52 @@ void KatePrintHeaderFooter::setHFFont()
   }
 }
 
+void KatePrintHeaderFooter::showContextMenu(const QPoint& pos)
+{
+  QLineEdit* lineEdit = qobject_cast<QLineEdit*>(sender());
+  if (!lineEdit) {
+    return;
+  }
+
+  QMenu* const contextMenu = lineEdit->createStandardContextMenu();
+  if (contextMenu == NULL) {
+    return;
+  }
+  contextMenu->addSeparator();
+
+  // create original context menu
+  QMenu* menu = contextMenu->addMenu(i18n("Add Placeholder..."));
+  menu->setIcon(KIcon("list-add"));
+  QAction* a = menu->addAction(i18n("Current User Name") + "\t%u");
+  a->setData("%u");
+  a = menu->addAction(i18n("Complete Date/Time (short format)") + "\t%d");
+  a->setData("%d");
+  a = menu->addAction(i18n("Complete Date/Time (long format)") + "\t%D");
+  a->setData("%D");
+  a = menu->addAction(i18n("Current Time") + "\t%h");
+  a->setData("%h");
+  a = menu->addAction(i18n("Current Date (short format)") + "\t%y");
+  a->setData("%y");
+  a = menu->addAction(i18n("Current Date (long format)") + "\t%Y");
+  a->setData("%Y");
+  a = menu->addAction(i18n("File Name") + "\t%f");
+  a->setData("%f");
+  a = menu->addAction(i18n("Full document URL") + "\t%U");
+  a->setData("%U");
+  a = menu->addAction(i18n("Page Number") + "\t%p");
+  a->setData("%p");
+  a = menu->addAction(i18n("Total Amount of Pages") + "\t%P");
+  a->setData("%P");
+
+  QAction* const result = contextMenu->exec(lineEdit->mapToGlobal(pos));
+  if (result) {
+    QString placeHolder = result->data().toString();
+    if (!placeHolder.isEmpty()) {
+      lineEdit->insert(placeHolder);
+    }
+  }
+}
+
 void KatePrintHeaderFooter::readSettings()
 {
   KSharedConfigPtr config = KGlobal::config();
diff --git a/part/utils/kateprinter.h b/part/utils/kateprinter.h
index 1bcc738..c17100d 100644
--- a/part/utils/kateprinter.h
+++ b/part/utils/kateprinter.h
@@ -105,6 +105,7 @@ class KatePrintHeaderFooter : public QWidget
 
   public Q_SLOTS:
     void setHFFont();
+    void showContextMenu(const QPoint& pos);
 
   private:
     void readSettings();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic