diff options
Diffstat (limited to 'src/forms')
| -rw-r--r-- | src/forms/bookmarksdialog.cpp | 53 | ||||
| -rw-r--r-- | src/forms/bookmarksdialog.h | 14 | ||||
| -rw-r--r-- | src/forms/bookmarksdialog.ui | 111 | 
3 files changed, 161 insertions, 17 deletions
diff --git a/src/forms/bookmarksdialog.cpp b/src/forms/bookmarksdialog.cpp index bf5a9fc..d61cf18 100644 --- a/src/forms/bookmarksdialog.cpp +++ b/src/forms/bookmarksdialog.cpp @@ -20,17 +20,42 @@  #include "bookmarksdialog.h"  #include "ui_bookmarksdialog.h" - +#include <QTreeWidget>  #include "xbel/xbel.h" +#include "mainwindow.h" -BookmarksDialog::BookmarksDialog(QWidget *parent) : +BookmarksDialog::BookmarksDialog(MainWindow *parent) :      QDialog(parent),      ui(new Ui::BookmarksDialog)  { +    parentWindow = parent;      ui->setupUi(this); +    ui->treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch); + +    QStyle *style = ui->treeWidget->style(); +    ui->addFolder_toolButton->setIcon(style->standardPixmap(QStyle::SP_DirIcon)); +    ui->addBookmark_toolButton->setIcon(style->standardPixmap(QStyle::SP_FileIcon)); +    ui->addSeparator_toolButton->setText("---"); +    ui->deleteItem_toolButton->setIcon(style->standardPixmap(QStyle::SP_TrashIcon)); + +    connect(ui->treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(showItemDetails())); +    connect(ui->treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(openItem(QTreeWidgetItem*,int))); + +    ui->deleteItem_toolButton->setShortcut(QKeySequence::Delete); +    connect(ui->deleteItem_toolButton, SIGNAL(clicked(bool)), this, SLOT(deleteCurrentItem()));      xbel = new Xbel(ui->treeWidget);      xbel->read("bookmarks.xbel"); + +    connect(ui->addFolder_toolButton, &QToolButton::clicked, [this]() { +        xbel->addFolder(ui->treeWidget->currentItem()); +    }); +    connect(ui->addBookmark_toolButton, &QToolButton::clicked, [this]() { +        xbel->addBookmark(ui->treeWidget->currentItem()); +    }); +    connect(ui->addSeparator_toolButton, &QToolButton::clicked, [this]() { +        xbel->addSeparator(ui->treeWidget->currentItem()); +    });  }  BookmarksDialog::~BookmarksDialog() @@ -40,3 +65,27 @@ BookmarksDialog::~BookmarksDialog()      delete xbel;      delete ui;  } + +void BookmarksDialog::deleteCurrentItem() +{ +    delete ui->treeWidget->currentItem(); +} + +void BookmarksDialog::openItem(QTreeWidgetItem *item, int column) +{ +    Q_UNUSED(column) + +    parentWindow->createNewTab(QUrl::fromUserInput(item->text(1))); +} + +void BookmarksDialog::showItemDetails() +{ +    QTreeWidgetItem *item = ui->treeWidget->currentItem(); +    if(!item) { +        ui->title_lineEdit->setText(""); +        ui->href_label->setText(""); +        return; +    } +    ui->title_lineEdit->setText(item->text(0)); +    ui->href_lineEdit->setText(item->text(1)); +} diff --git a/src/forms/bookmarksdialog.h b/src/forms/bookmarksdialog.h index b01fc8b..e2387d7 100644 --- a/src/forms/bookmarksdialog.h +++ b/src/forms/bookmarksdialog.h @@ -28,15 +28,27 @@ namespace Ui {  class BookmarksDialog;  } +class MainWindow;  class BookmarksDialog : public QDialog  {      Q_OBJECT  public: -    explicit BookmarksDialog(QWidget *parent = 0); +    explicit BookmarksDialog(MainWindow *parent = 0);      ~BookmarksDialog(); +public slots: +    // void addFolder(const QString &title); +    // void addBookmark(const QString &title, const QString &href); +    // void addSeparator(); +    void deleteCurrentItem(); + +private slots: +    void openItem(QTreeWidgetItem *item, int column); +    void showItemDetails(); +  private: +    MainWindow *parentWindow;      Ui::BookmarksDialog *ui;      Xbel *xbel;  }; diff --git a/src/forms/bookmarksdialog.ui b/src/forms/bookmarksdialog.ui index f578737..a0e4316 100644 --- a/src/forms/bookmarksdialog.ui +++ b/src/forms/bookmarksdialog.ui @@ -6,27 +6,110 @@     <rect>      <x>0</x>      <y>0</y> -    <width>640</width> +    <width>820</width>      <height>480</height>     </rect>    </property>    <property name="windowTitle">     <string>Bookmarks</string>    </property> -  <layout class="QVBoxLayout" name="verticalLayout"> +  <layout class="QVBoxLayout" name="verticalLayout_2">     <item> -    <widget class="QTreeWidget" name="treeWidget"> -     <column> -      <property name="text"> -       <string notr="true">1</string> -      </property> -     </column> -     <column> -      <property name="text"> -       <string>2</string> -      </property> -     </column> -    </widget> +    <layout class="QHBoxLayout" name="horizontalLayout"> +     <item> +      <widget class="QTreeWidget" name="treeWidget"> +       <property name="dragEnabled"> +        <bool>true</bool> +       </property> +       <property name="dragDropMode"> +        <enum>QAbstractItemView::InternalMove</enum> +       </property> +       <property name="defaultDropAction"> +        <enum>Qt::MoveAction</enum> +       </property> +       <column> +        <property name="text"> +         <string notr="true">Title</string> +        </property> +       </column> +       <column> +        <property name="text"> +         <string>href</string> +        </property> +       </column> +      </widget> +     </item> +     <item> +      <layout class="QVBoxLayout" name="verticalLayout"> +       <item> +        <layout class="QHBoxLayout" name="horizontalLayout_2"> +         <item> +          <widget class="QToolButton" name="addFolder_toolButton"> +           <property name="text"> +            <string>...</string> +           </property> +          </widget> +         </item> +         <item> +          <widget class="QToolButton" name="addBookmark_toolButton"> +           <property name="text"> +            <string>...</string> +           </property> +          </widget> +         </item> +         <item> +          <widget class="QToolButton" name="addSeparator_toolButton"> +           <property name="text"> +            <string>...</string> +           </property> +          </widget> +         </item> +         <item> +          <widget class="QToolButton" name="deleteItem_toolButton"> +           <property name="text"> +            <string>...</string> +           </property> +          </widget> +         </item> +        </layout> +       </item> +       <item> +        <widget class="QGroupBox" name="groupBox"> +         <property name="minimumSize"> +          <size> +           <width>250</width> +           <height>0</height> +          </size> +         </property> +         <property name="maximumSize"> +          <size> +           <width>250</width> +           <height>16777215</height> +          </size> +         </property> +         <property name="title"> +          <string>Details</string> +         </property> +         <layout class="QFormLayout" name="formLayout"> +          <item row="1" column="0"> +           <widget class="QLabel" name="href_label"> +            <property name="text"> +             <string>href</string> +            </property> +           </widget> +          </item> +          <item row="1" column="1"> +           <widget class="QLineEdit" name="href_lineEdit"/> +          </item> +          <item row="0" column="1"> +           <widget class="QLineEdit" name="title_lineEdit"/> +          </item> +         </layout> +        </widget> +       </item> +      </layout> +     </item> +    </layout>     </item>     <item>      <widget class="QDialogButtonBox" name="buttonBox">  | 
