Changeset 124 for smplayer/trunk/src/favoriteeditor.cpp
- Timestamp:
- Mar 16, 2012, 4:02:47 PM (13 years ago)
- Location:
- smplayer/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
smplayer/trunk
- Property svn:mergeinfo changed
/smplayer/vendor/current merged: 121-122
- Property svn:mergeinfo changed
-
smplayer/trunk/src/favoriteeditor.cpp
r119 r124 1 1 /* smplayer, GUI front-end for mplayer. 2 Copyright (C) 2006-201 1 Ricardo Villalba <rvm@escomposlinux.org>2 Copyright (C) 2006-2012 Ricardo Villalba <rvm@users.sourceforge.net> 3 3 4 4 This program is free software; you can redistribute it and/or modify … … 22 22 #include <QHeaderView> 23 23 #include <QFileDialog> 24 #include <QItemDelegate> 25 #include "filechooser.h" 24 26 25 27 #define COL_ICON 0 26 28 #define COL_NAME 1 27 29 #define COL_FILE 2 30 31 #include <QItemDelegate> 32 33 class FEDelegate : public QItemDelegate 34 { 35 public: 36 FEDelegate(QObject *parent = 0); 37 38 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, 39 const QModelIndex &index) const; 40 virtual void setModelData(QWidget * editor, QAbstractItemModel * model, 41 const QModelIndex & index ) const; 42 }; 43 44 FEDelegate::FEDelegate(QObject *parent) : QItemDelegate(parent) { 45 } 46 47 QWidget * FEDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem & option, const QModelIndex & index) const { 48 //qDebug("FEDelegate::createEditor"); 49 50 if (index.column() == COL_FILE) { 51 FileChooser * fch = new FileChooser(parent); 52 fch->setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::DontResolveSymlinks); // Crashes if use the KDE dialog 53 fch->setText( index.model()->data(index, Qt::DisplayRole).toString() ); 54 return fch; 55 } 56 else 57 if (index.column() == COL_NAME) { 58 QLineEdit * e = new QLineEdit(parent); 59 e->setText( index.model()->data(index, Qt::DisplayRole).toString() ); 60 return e; 61 } 62 else { 63 return QItemDelegate::createEditor(parent, option, index); 64 } 65 } 66 67 void FEDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { 68 if (index.column() == COL_FILE) { 69 FileChooser * fch = static_cast<FileChooser*>(editor); 70 model->setData(index, fch->text() ); 71 } 72 else 73 if (index.column() == COL_NAME) { 74 QLineEdit * e = static_cast<QLineEdit*>(editor); 75 model->setData(index, e->text() ); 76 } 77 } 78 79 QString FavoriteEditor::last_dir; 28 80 29 81 FavoriteEditor::FavoriteEditor( QWidget* parent, Qt::WindowFlags f ) … … 32 84 setupUi(this); 33 85 86 add_button->setIcon( Images::icon("bookmark_add") ); 87 add_submenu_button->setIcon( Images::icon("bookmark_folder") ); 88 delete_button->setIcon( Images::icon("delete") ); 89 delete_all_button->setIcon( Images::icon("trash") ); 90 up_button->setIcon( Images::icon("up") ); 91 down_button->setIcon( Images::icon("down") ); 92 34 93 table->setColumnCount(3); 35 94 table->setHorizontalHeaderLabels(QStringList() << tr("Icon") << tr("Name") << tr("Media") ); … … 40 99 table->setSelectionBehavior(QAbstractItemView::SelectRows); 41 100 table->setSelectionMode(QAbstractItemView::ExtendedSelection); 101 102 table->setItemDelegateForColumn( COL_NAME, new FEDelegate(table) ); 103 table->setItemDelegateForColumn( COL_FILE, new FEDelegate(table) ); 42 104 43 105 connect(table, SIGNAL(cellActivated(int,int)), this, SLOT(edit_icon(int,int))); … … 92 154 icon_item->setIcon( QIcon(list[n].icon()) ); 93 155 icon_item->setData( Qt::UserRole, list[n].icon() ); 156 icon_item->setData( Qt::ToolTipRole, list[n].icon() ); 94 157 icon_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); 95 158 … … 98 161 99 162 QTableWidgetItem * file_item = new QTableWidgetItem; 100 file_item->setText( list[n].file() ); 163 file_item->setData( Qt::ToolTipRole, list[n].file() ); 164 file_item->setData( Qt::UserRole, list[n].isSubentry() ); 165 if (list[n].isSubentry()) { 166 file_item->setFlags(Qt::ItemIsSelectable); 167 file_item->setData( Qt::UserRole + 1, list[n].file() ); 168 file_item->setText( tr("Favorite list") ); 169 } else { 170 file_item->setText( list[n].file() ); 171 } 101 172 102 173 table->setItem(n, COL_ICON, icon_item); … … 105 176 } 106 177 107 table->setCurrentCell(0, 0); 178 //table->resizeColumnsToContents(); 179 180 //table->setCurrentCell(0, 0); 181 table->setCurrentCell(table->rowCount()-1, 0); 108 182 } 109 183 … … 114 188 Favorite f; 115 189 f.setName( table->item(n, COL_NAME)->text() ); 116 f.setFile( table->item(n, COL_FILE)->text() );117 190 f.setIcon( table->item(n, COL_ICON)->data(Qt::UserRole).toString() ); 191 f.setSubentry( table->item(n, COL_FILE)->data(Qt::UserRole).toBool() ); 192 if (f.isSubentry()) { 193 f.setFile( table->item(n, COL_FILE)->data(Qt::UserRole + 1).toString() ); 194 } else { 195 f.setFile( table->item(n, COL_FILE)->text() ); 196 } 118 197 119 198 list.append(f); … … 150 229 table->setItem(row, COL_NAME, new QTableWidgetItem); 151 230 table->setItem(row, COL_FILE, new QTableWidgetItem); 231 232 table->setCurrentCell(row, table->currentColumn()); 233 } 234 235 void FavoriteEditor::on_add_submenu_button_clicked() { 236 qDebug("FavoriteEditor::on_add_submenu_button_clicked"); 237 qDebug("FavoriteEditor::on_add_submenu_button_clicked: store_path: '%s'", store_path.toUtf8().constData()); 238 239 QString filename; 240 //QString s; 241 int n = 1; 242 do { 243 filename = QString("favorites%1.m3u8").arg(n, 4, 10, QChar('0')); 244 if (!store_path.isEmpty()) filename = store_path +"/"+ filename; 245 qDebug("FavoriteEditor::on_add_submenu_button_clicked: filename: '%s'", filename.toUtf8().constData()); 246 n++; 247 } while (QFile::exists(filename)); 248 249 qDebug("FavoriteEditor::on_add_submenu_button_clicked: choosen filename: '%s'", filename.toUtf8().constData()); 250 251 252 int row = table->currentRow(); 253 row++; 254 table->insertRow(row); 255 256 QTableWidgetItem * icon_item = new QTableWidgetItem; 257 icon_item->setData( Qt::UserRole, Images::file("openfolder.png") ); 258 icon_item->setIcon( Images::icon("openfolder") ); 259 icon_item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); 260 261 table->setItem(row, COL_ICON, icon_item); 262 table->setItem(row, COL_NAME, new QTableWidgetItem); 263 264 QTableWidgetItem * file_item = new QTableWidgetItem; 265 file_item->setData( Qt::UserRole, true ); 266 file_item->setFlags(Qt::ItemIsSelectable); 267 file_item->setData( Qt::UserRole + 1, filename ); 268 file_item->setText( tr("Favorite list") ); 269 file_item->setData( Qt::ToolTipRole, filename ); 270 table->setItem(row, COL_FILE, file_item); 152 271 153 272 table->setCurrentCell(row, table->currentColumn());
Note:
See TracChangeset
for help on using the changeset viewer.