From: <fon...@us...> - 2009-09-30 11:48:18
|
Revision: 5501 http://kmess.svn.sourceforge.net/kmess/?rev=5501&view=rev Author: fontknocker Date: 2009-09-30 11:48:08 +0000 (Wed, 30 Sep 2009) Log Message: ----------- * Commit patch by Anastasios Bourazanis to provide an emoticon preview in the emoticon settings page. * Use double-click instead of single-click to trigger emoticon modification. * Fix bug in AddEmoticonDialog - cache all frames of emoticon to prevent infinite loop if emoticon file is deleted. Modified Paths: -------------- branches/kmess/kmess-2.0.x/ChangeLog branches/kmess/kmess-2.0.x/src/dialogs/addemoticondialog.cpp branches/kmess/kmess-2.0.x/src/main.cpp branches/kmess/kmess-2.0.x/src/settings/emoticonspage.cpp branches/kmess/kmess-2.0.x/src/settings/emoticonspage.h branches/kmess/kmess-2.0.x/src/settings/emoticonspage.ui Modified: branches/kmess/kmess-2.0.x/ChangeLog =================================================================== --- branches/kmess/kmess-2.0.x/ChangeLog 2009-09-29 22:02:53 UTC (rev 5500) +++ branches/kmess/kmess-2.0.x/ChangeLog 2009-09-30 11:48:08 UTC (rev 5501) @@ -1,3 +1,9 @@ +2009-09-30 (Adam) + * Commit patch by Anastasios Bourazanis; preview of emoticons in emoticon settings page. + * Double-click emoticon to edit instead of single click. + * In AddEmoticonDialog, instruct QMovie to cache all frames. Prevents infinite loops if the + emoticon file is deleted. + 2009-09-29 (Valerio) * Fixed the Online notifications. The original issue kindly brought to you by Microsoft®. Modified: branches/kmess/kmess-2.0.x/src/dialogs/addemoticondialog.cpp =================================================================== --- branches/kmess/kmess-2.0.x/src/dialogs/addemoticondialog.cpp 2009-09-29 22:02:53 UTC (rev 5500) +++ branches/kmess/kmess-2.0.x/src/dialogs/addemoticondialog.cpp 2009-09-30 11:48:08 UTC (rev 5501) @@ -74,7 +74,8 @@ this, SLOT( interfaceChanged() ) ); movie_ = new QMovie(); - + movie_->setCacheMode ( QMovie::CacheAll ); + // Force an update of the widgets (mainly to show the KMess logo as // the preview and to disable the Ok button) interfaceChanged(); Modified: branches/kmess/kmess-2.0.x/src/main.cpp =================================================================== --- branches/kmess/kmess-2.0.x/src/main.cpp 2009-09-29 22:02:53 UTC (rev 5500) +++ branches/kmess/kmess-2.0.x/src/main.cpp 2009-09-30 11:48:08 UTC (rev 5501) @@ -177,6 +177,7 @@ aboutData.addCredit( ki18n("Camille Begue"), ki18n("Chat History functionality when disconnected, autologin checkbox on login screen"), "prsieux" "@" "@gmail" "." "com"); aboutData.addCredit( ki18n("David López"), ki18n("Nudge button in chat"), "grannost" "@" "gmail" "." "com" ); aboutData.addCredit( ki18n("Pieterjan Camerlynck"), ki18n("Roaming Service support"), "pieterjan" "." "camerlynck" "@" "gmail" "." "com" ); + aboutData.addCredit( ki18n("Anastasios Bourazanis"), ki18n("Emoticon preview in settings page"), ""); // Other apps aboutData.addCredit( ki18n("KMerlin (kmerlin.olsd.de)"), ki18n("Inspiration and assorted code")); Modified: branches/kmess/kmess-2.0.x/src/settings/emoticonspage.cpp =================================================================== --- branches/kmess/kmess-2.0.x/src/settings/emoticonspage.cpp 2009-09-29 22:02:53 UTC (rev 5500) +++ branches/kmess/kmess-2.0.x/src/settings/emoticonspage.cpp 2009-09-30 11:48:08 UTC (rev 5501) @@ -56,11 +56,17 @@ this, SLOT( renameCustomEmoticon() ) ); connect( removeEmoticonButton_, SIGNAL( clicked() ), this, SLOT( removeCustomEmoticon() ) ); - connect( customEmoticonsView_, SIGNAL( itemActivated(QListWidgetItem*) ), + connect( customEmoticonsView_, SIGNAL( itemDoubleClicked(QListWidgetItem*) ), this, SLOT( renameCustomEmoticon() ) ); connect( customEmoticonsView_, SIGNAL( itemSelectionChanged() ), this, SLOT( customEmoticonSelected() ) ); + connect( customEmoticonsView_, SIGNAL( itemEntered(QListWidgetItem*) ), + this, SLOT( requestPreview(QListWidgetItem*) ) ); + previewMovie_ = new QMovie( this ); + previewMovie_->stop(); + previewMovie_->setCacheMode( QMovie::CacheAll ); + previewLabel_->setMovie( previewMovie_ ); // the other properties of the widget are initialized // in the loadSettings() method } @@ -84,6 +90,51 @@ /** + * Preview requested + */ +void EmoticonsPage::requestPreview( QListWidgetItem *item ) +{ + + // Stop the movie and set the new emoticon + previewMovie_->stop(); + + // If the new item is not null set the emoticon to preview + if( item != 0 ) + { + previewLabel_->setMovie( previewMovie_ ); + previewMovie_->setFileName( item->data( Qt::UserRole ).toString() ); + } + else + { + // if the item is null, set empty pixmap + previewLabel_->setPixmap( QPixmap() ); + return; + } + + // Check if the file format is valid + if( ! previewMovie_->isValid() ) + { + return; + } + + previewMovie_->start(); + + // Scale the emoticon if it is larger than its container + if( previewMovie_->currentPixmap().size().width() > previewLabel_->size().width() + || previewMovie_->currentPixmap().size().height() > previewLabel_->size().height() ) + { + previewLabel_->setScaledContents( true ); + } + else + { + previewLabel_->setScaledContents( false ); + } +} + + + + +/** * Update the Remove Button status when emoticons get selected */ void EmoticonsPage::customEmoticonSelected() @@ -153,6 +204,10 @@ // Remove the emoticon from the temporary theme, and if that succeeds, from the list int itemRow = customEmoticonsView_->row( item ); + + previewMovie_->stop(); + previewLabel_->setMovie( 0 ); + if( emoticonTheme_->removeEmoticon( item->text() ) && itemRow >= 0 ) { // Safe, takeItem() returns 0 on failure Modified: branches/kmess/kmess-2.0.x/src/settings/emoticonspage.h =================================================================== --- branches/kmess/kmess-2.0.x/src/settings/emoticonspage.h 2009-09-29 22:02:53 UTC (rev 5500) +++ branches/kmess/kmess-2.0.x/src/settings/emoticonspage.h 2009-09-30 11:48:08 UTC (rev 5501) @@ -72,6 +72,8 @@ void showAddEmoticonDialog(); // Fill the widget which contains all the user's custom emoticons void updateCustomEmoticonView(); + //Request preview of the emoticon + void requestPreview(QListWidgetItem *item ); private: // private properties // Handle of the account we're changing @@ -80,6 +82,7 @@ EmoticonTheme *emoticonTheme_; // Selected emoticon style name QString emoticonStyle_; + QMovie *previewMovie_; }; #endif Modified: branches/kmess/kmess-2.0.x/src/settings/emoticonspage.ui =================================================================== --- branches/kmess/kmess-2.0.x/src/settings/emoticonspage.ui 2009-09-29 22:02:53 UTC (rev 5500) +++ branches/kmess/kmess-2.0.x/src/settings/emoticonspage.ui 2009-09-30 11:48:08 UTC (rev 5501) @@ -17,7 +17,7 @@ <item> <widget class="QTabWidget" name="tabWidget_"> <property name="currentIndex"> - <number>0</number> + <number>1</number> </property> <widget class="QWidget" name="tab"> <attribute name="title"> @@ -72,67 +72,21 @@ <attribute name="title"> <string>&Custom Emoticons</string> </attribute> - <layout class="QVBoxLayout"> - <item> - <widget class="QLabel" name="textLabel1_2"> - <property name="text"> - <string>Available custom emoticons:</string> + <layout class="QGridLayout" name="gridLayout"> + <item row="2" column="1"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> </property> - <property name="wordWrap"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <widget class="QListWidget" name="customEmoticonsView_"> - <property name="mouseTracking"> - <bool>true</bool> - </property> - <property name="editTriggers"> - <set>QAbstractItemView::DoubleClicked</set> - </property> - <property name="tabKeyNavigation"> - <bool>true</bool> - </property> - <property name="showDropIndicator" stdset="0"> - <bool>false</bool> - </property> - <property name="selectionBehavior"> - <enum>QAbstractItemView::SelectItems</enum> - </property> - <property name="iconSize"> + <property name="sizeHint" stdset="0"> <size> - <width>36</width> - <height>36</height> + <width>20</width> + <height>284</height> </size> </property> - <property name="textElideMode"> - <enum>Qt::ElideNone</enum> - </property> - <property name="verticalScrollMode"> - <enum>QAbstractItemView::ScrollPerPixel</enum> - </property> - <property name="horizontalScrollMode"> - <enum>QAbstractItemView::ScrollPerPixel</enum> - </property> - <property name="movement"> - <enum>QListView::Static</enum> - </property> - <property name="resizeMode"> - <enum>QListView::Adjust</enum> - </property> - <property name="spacing"> - <number>16</number> - </property> - <property name="viewMode"> - <enum>QListView::IconMode</enum> - </property> - <property name="uniformItemSizes"> - <bool>false</bool> - </property> - </widget> + </spacer> </item> - <item> + <item row="3" column="0" colspan="2"> <layout class="QHBoxLayout"> <item> <spacer> @@ -213,6 +167,99 @@ </item> </layout> </item> + <item row="0" column="0"> + <widget class="QLabel" name="textLabel1_2"> + <property name="text"> + <string>Available custom emoticons:</string> + </property> + <property name="wordWrap"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0" rowspan="2"> + <widget class="QListWidget" name="customEmoticonsView_"> + <property name="mouseTracking"> + <bool>true</bool> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::DoubleClicked</set> + </property> + <property name="tabKeyNavigation"> + <bool>true</bool> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="selectionBehavior"> + <enum>QAbstractItemView::SelectItems</enum> + </property> + <property name="iconSize"> + <size> + <width>36</width> + <height>36</height> + </size> + </property> + <property name="textElideMode"> + <enum>Qt::ElideNone</enum> + </property> + <property name="verticalScrollMode"> + <enum>QAbstractItemView::ScrollPerPixel</enum> + </property> + <property name="horizontalScrollMode"> + <enum>QAbstractItemView::ScrollPerPixel</enum> + </property> + <property name="movement"> + <enum>QListView::Static</enum> + </property> + <property name="resizeMode"> + <enum>QListView::Adjust</enum> + </property> + <property name="spacing"> + <number>16</number> + </property> + <property name="viewMode"> + <enum>QListView::IconMode</enum> + </property> + <property name="uniformItemSizes"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="previewLabel_"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>48</width> + <height>48</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>48</width> + <height>48</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Sunken</enum> + </property> + <property name="text"> + <string/> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> </layout> </widget> </widget> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |