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

List:       kde-commits
Subject:    KDE/kdegraphics/gwenview/lib/crop
From:       Aurélien Gâteau <aurelien.gateau () free ! fr>
Date:       2009-03-05 17:23:14
Message-ID: 1236273794.351539.7584.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 935583 by gateau:

Simplified crop ratio ui: merged two lineedits and one combo box into only one editable combobox.

 M  +25 -30    cropwidget.cpp  
 M  +0 -1      cropwidget.h  
 M  +16 -52    cropwidget.ui  


--- trunk/KDE/kdegraphics/gwenview/lib/crop/cropwidget.cpp #935582:935583
@@ -27,6 +27,7 @@
 // KDE
 #include <kdebug.h>
 #include <kdialog.h>
+#include <klineedit.h>
 #include <klocale.h>
 
 // Local
@@ -45,24 +46,34 @@
 
 
 	bool ratioIsConstrained() const {
-		return ratioWidthSpinBox->value() > 0 && ratioHeightSpinBox->value() > 0;
+		return cropRatio() > 0;
 	}
 
 
 	double cropRatio() const {
-		if (!ratioIsConstrained()) {
+		const QStringList lst = ratioComboBox->currentText().split(":");
+		if (lst.size() != 2) {
 			return 0;
 		}
-		int width = ratioWidthSpinBox->value();
-		int height = ratioHeightSpinBox->value();
-		return height / double(width);
+
+		bool ok;
+		const double width = lst[0].toDouble(&ok);
+		if (!ok) {
+			return 0;
+		}
+		const double height = lst[1].toDouble(&ok);
+		if (!ok) {
+			return 0;
+		}
+
+		return height / width;
 	}
 
 
 	void addRatioToComboBox(const QSize& size, const QString& _label = QString()) {
 		QString label = _label;
 		if (label.isEmpty()) {
-			label = QString("%1 x %2").arg(size.width()).arg(size.height());
+			label = QString("%1:%2").arg(size.width()).arg(size.height());
 		}
 		ratioComboBox->addItem(label, QVariant(size));
 	}
@@ -83,9 +94,8 @@
 			<< QSize(7, 5)
 			<< QSize(10, 8);
 
-		addRatioToComboBox(QSize(0, 0), i18nc("Crop tool won't apply any ratio constraint", "No Constraint"));
-		addSeparatorToComboBox();
 		addRatioToComboBox(QSize(1, 1), i18n("Square"));
+		addSeparatorToComboBox();
 
 		Q_FOREACH(const QSize& size, ratioList) {
 			addRatioToComboBox(size);
@@ -97,6 +107,11 @@
 		}
 
 		ratioComboBox->setMaxVisibleItems(ratioComboBox->count());
+		ratioComboBox->setEditText(QString());
+
+		KLineEdit* edit = qobject_cast<KLineEdit*>(ratioComboBox->lineEdit());
+		Q_ASSERT(edit);
+		edit->setClickMessage(i18n("Width:Height"));
 	}
 
 
@@ -154,14 +169,11 @@
 	connect(d->cropButton, SIGNAL(clicked()),
 		SIGNAL(cropRequested()) );
 	
-	connect(d->ratioWidthSpinBox, SIGNAL(valueChanged(int)),
+	connect(d->ratioComboBox, SIGNAL(activated(int)),
 		SLOT(applyRatioConstraint()) );
-	connect(d->ratioHeightSpinBox, SIGNAL(valueChanged(int)),
+	connect(d->ratioComboBox, SIGNAL(editTextChanged(const QString&)),
 		SLOT(applyRatioConstraint()) );
 
-	connect(d->ratioComboBox, SIGNAL(activated(int)),
-		SLOT(setRatioConstraintFromComboBox()) );
-
 	// Don't do this before signals are connected, otherwise the tool won't get
 	// initialized
 	d->initSpinBoxes();
@@ -236,21 +248,4 @@
 }
 
 
-void CropWidget::setRatioConstraintFromComboBox() {
-	QVariant data = d->ratioComboBox->itemData(d->ratioComboBox->currentIndex());
-	if (!data.isValid()) {
-		return;
-	}
-
-	QSize size = data.toSize();
-	{
-		SignalBlocker blockerW(d->ratioWidthSpinBox);
-		SignalBlocker blockerH(d->ratioHeightSpinBox);
-		d->ratioWidthSpinBox->setValue(size.width());
-		d->ratioHeightSpinBox->setValue(size.height());
-	}
-	applyRatioConstraint();
-}
-
-
 } // namespace
--- trunk/KDE/kdegraphics/gwenview/lib/crop/cropwidget.h #935582:935583
@@ -54,7 +54,6 @@
 	void setCropRect(const QRect& rect);
 
 	void applyRatioConstraint();
-	void setRatioConstraintFromComboBox();
 
 private:
 	CropWidgetPrivate* const d;
--- trunk/KDE/kdegraphics/gwenview/lib/crop/cropwidget.ui #935582:935583
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>276</width>
-    <height>190</height>
+    <height>154</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -31,14 +31,14 @@
    <item row="1" column="0" colspan="3">
     <widget class="QWidget" name="advancedWidget" native="true">
      <layout class="QGridLayout" name="gridLayout">
-      <item row="0" column="0" colspan="4">
+      <item row="0" column="0" colspan="3">
        <widget class="Line" name="line_2">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
        </widget>
       </item>
-      <item row="1" column="0">
+      <item row="1" column="0" rowspan="2">
        <widget class="QLabel" name="label_6">
         <property name="text">
          <string>Ratio:</string>
@@ -46,59 +46,26 @@
         <property name="alignment">
          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
         </property>
-        <property name="buddy">
-         <cstring>ratioComboBox</cstring>
-        </property>
        </widget>
       </item>
-      <item row="1" column="2" colspan="2">
-       <layout class="QHBoxLayout" name="horizontalLayout_2">
-        <item>
-         <widget class="KComboBox" name="ratioComboBox"/>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_2">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-      <item row="2" column="2">
-       <widget class="QSpinBox" name="ratioWidthSpinBox">
-        <property name="specialValueText">
-         <string>-</string>
+      <item row="2" column="1" colspan="2">
+       <widget class="KComboBox" name="ratioComboBox">
+        <property name="editable">
+         <bool>true</bool>
         </property>
-        <property name="value">
-         <number>0</number>
+        <property name="insertPolicy">
+         <enum>QComboBox::NoInsert</enum>
         </property>
        </widget>
       </item>
-      <item row="2" column="3">
-       <widget class="QSpinBox" name="ratioHeightSpinBox">
-        <property name="specialValueText">
-         <string>-</string>
-        </property>
-        <property name="value">
-         <number>0</number>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="0" colspan="4">
+      <item row="3" column="0" colspan="3">
        <widget class="Line" name="line">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
        </widget>
       </item>
-      <item row="5" column="0">
+      <item row="4" column="0">
        <widget class="QLabel" name="label">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -117,7 +84,7 @@
         </property>
        </widget>
       </item>
-      <item row="5" column="2">
+      <item row="4" column="1">
        <widget class="QSpinBox" name="leftSpinBox">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@@ -127,7 +94,7 @@
         </property>
        </widget>
       </item>
-      <item row="5" column="3">
+      <item row="4" column="2">
        <widget class="QSpinBox" name="topSpinBox">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -137,7 +104,7 @@
         </property>
        </widget>
       </item>
-      <item row="6" column="0">
+      <item row="5" column="0">
        <widget class="QLabel" name="label_3">
         <property name="text">
          <string>Size:</string>
@@ -150,7 +117,7 @@
         </property>
        </widget>
       </item>
-      <item row="6" column="2">
+      <item row="5" column="1">
        <widget class="QSpinBox" name="widthSpinBox">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -160,7 +127,7 @@
         </property>
        </widget>
       </item>
-      <item row="6" column="3">
+      <item row="5" column="2">
        <widget class="QSpinBox" name="heightSpinBox">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -198,9 +165,6 @@
  <tabstops>
   <tabstop>advancedCheckBox</tabstop>
   <tabstop>cropButton</tabstop>
-  <tabstop>ratioComboBox</tabstop>
-  <tabstop>ratioWidthSpinBox</tabstop>
-  <tabstop>ratioHeightSpinBox</tabstop>
   <tabstop>leftSpinBox</tabstop>
   <tabstop>topSpinBox</tabstop>
   <tabstop>widthSpinBox</tabstop>
[prev in list] [next in list] [prev in thread] [next in thread] 

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