mirror of
https://gitlab.com/eql/EQL5.git
synced 2025-12-09 03:50:24 -08:00
62 lines
2.2 KiB
Common Lisp
62 lines
2.2 KiB
Common Lisp
;;; this is (kind of) a simplified port of the "tableview" C++/QML example
|
||
;;; (see also README.txt)
|
||
|
||
(si::trap-fpe t nil) ; ignore floating point overflows
|
||
|
||
(qrequire :quick)
|
||
|
||
(require :properties "properties")
|
||
|
||
(defpackage :table-view
|
||
(:nicknames :table)
|
||
(:use :cl :eql :qml))
|
||
|
||
(in-package :table)
|
||
|
||
(require :source-model "source-model")
|
||
|
||
(defvar *sort-filter-model* (qnew "QSortFilterProxyModel"))
|
||
|
||
(defun filter (text) ; called from QML
|
||
(|setFilterWildcard| *sort-filter-model* text))
|
||
|
||
(defun sort-column (role-name &optional (order |Qt.AscendingOrder|)) ; called from QML
|
||
(let ((role (car (find role-name (|roleNames| *sort-filter-model*)
|
||
:key 'cdr :test 'string=))))
|
||
(x:do-with *sort-filter-model*
|
||
(|setSortRole| role)
|
||
(|sort| 0 order))))
|
||
|
||
(defun add-books ()
|
||
(add-book "Moby-Dick" "Herman Melville")
|
||
(add-book "The Adventures of Tom Sawyer" "Mark Twain")
|
||
(add-book "Cat’s Cradle" "Kurt Vonnegut")
|
||
(add-book "Farenheit 451" "Ray Bradbury")
|
||
(add-book "It" "Stephen King")
|
||
(add-book "On the Road" "Jack Kerouac")
|
||
(add-book "Of Mice and Men" "John Steinbeck")
|
||
(add-book "Do Androids Dream of Electric Sheep?" "Philip K. Dick")
|
||
(add-book "Uncle Tom’s Cabin" "Harriet Beecher Stowe")
|
||
(add-book "The Call of the Wild" "Jack London")
|
||
(add-book "The Old Man and the Sea" "Ernest Hemingway")
|
||
(add-book "A Streetcar Named Desire" "Tennessee Williams")
|
||
(add-book "Catch-22" "Joseph Heller")
|
||
(add-book "One Flew Over the Cuckoo’s Nest" "Ken Kesey")
|
||
(add-book "The Murders in the Rue Morgue" "Edgar Allan Poe")
|
||
(add-book "Breakfast at Tiffany’s" "Truman Capote")
|
||
(add-book "Death of a Salesman" "Arthur Miller")
|
||
(add-book "Post Office" "Charles Bukowski")
|
||
(add-book "Herbert West—Reanimator" "H. P. Lovecraft"))
|
||
|
||
(defun run ()
|
||
;; model & data
|
||
(make-book-model)
|
||
(add-books)
|
||
(|setFilterCaseSensitivity| *sort-filter-model* |Qt.CaseInsensitive|)
|
||
(|setSourceModel| *sort-filter-model* *book-model*)
|
||
;; view
|
||
(setf qml:*quick-view* (qnew "QQmlApplicationEngine")) ; because of QML ApplicationWindow
|
||
(|setContextProperty| (|rootContext| qml:*quick-view*) "sortFilterModel" *sort-filter-model*)
|
||
(|load| qml:*quick-view* "qml/table-view.qml"))
|
||
|
||
(run)
|