From d74f5155f9774eed4333eac8f8624160c58a4d57 Mon Sep 17 00:00:00 2001 From: Willem Liu Date: Wed, 27 Apr 2011 17:42:26 +0200 Subject: [PATCH] Version 0.3.23. Setup for PR1.3. --- .gitignore | 9 + Makefile | 147 ++++++++ chooselistform.cpp | 117 +++++++ chooselistform.h | 43 +++ chooselistform.ui | 63 ++++ data/26x26/easylist.png | Bin 0 -> 4317 bytes data/40x40/easylist.png | Bin 0 -> 6131 bytes data/48x48/easylist.b64 | 131 ++++++++ data/48x48/easylist.png | Bin 0 -> 7459 bytes data/64x64/easylist.png | Bin 0 -> 10763 bytes data/64x64/easylist.psd | Bin 0 -> 186560 bytes debian/README | 6 + debian/changelog | 12 + debian/control | 138 +------- debian/copyright | 10 +- debian/rules | 113 ++++--- easylist.desktop | 13 + easylist.pro | 83 ++++- easylist.pro.user | 542 +++++++++++++++++++++--------- editform.cpp | 36 ++ editform.h | 39 +++ editform.ui | 55 +++ globals.h | 20 ++ list.txt | 83 +++++ listform.cpp | 73 ++++ listform.h | 41 +++ listform.ui | 94 ++++++ main.cpp | 38 +++ mainform.cpp | 210 ++++++++++++ mainform.h | 62 ++++ mainform.ui | 127 +++++++ mycheckbox.cpp | 65 ++++ mycheckbox.h | 29 ++ mycheckboxcontainer.cpp | 222 ++++++++++++ mycheckboxcontainer.h | 46 +++ qtc_packaging/debian_fremantle/README | 6 + qtc_packaging/debian_fremantle/changelog | 133 ++++++++ qtc_packaging/debian_fremantle/compat | 1 + qtc_packaging/debian_fremantle/control | 20 ++ qtc_packaging/debian_fremantle/copyright | 38 +++ qtc_packaging/debian_fremantle/rules | 91 +++++ slidewidget.cpp | 66 ++++ slidewidget.h | 47 +++ src/data/26x26/easylist.png | Bin 4317 -> 0 bytes src/data/40x40/easylist.png | Bin 6131 -> 0 bytes src/data/48x48/easylist.png | Bin 7459 -> 0 bytes src/data/64x64/easylist.png | Bin 10763 -> 0 bytes src/easylist.desktop | 13 - src/editform.cpp | 35 -- src/editform.h | 38 --- src/editform.ui | 55 --- src/globals.h | 19 -- src/listform.cpp | 66 ---- src/listform.h | 41 --- src/listform.ui | 94 ------ src/main.cpp | 38 --- src/mainform.cpp | 209 ------------ src/mainform.h | 62 ---- src/mainform.ui | 127 ------- src/mycheckbox.cpp | 65 ---- src/mycheckbox.h | 29 -- src/mycheckboxcontainer.cpp | 222 ------------ src/mycheckboxcontainer.h | 46 --- src/slidewidget.cpp | 66 ---- src/slidewidget.h | 47 --- src/src.pro | 77 ----- src/systemsettings.cpp | 45 --- src/systemsettings.h | 29 -- systemsettings.cpp | 56 +++ systemsettings.h | 33 ++ 70 files changed, 2822 insertions(+), 1759 deletions(-) create mode 100755 .gitignore create mode 100755 Makefile create mode 100755 chooselistform.cpp create mode 100755 chooselistform.h create mode 100755 chooselistform.ui create mode 100755 data/26x26/easylist.png create mode 100755 data/40x40/easylist.png create mode 100755 data/48x48/easylist.b64 create mode 100755 data/48x48/easylist.png create mode 100755 data/64x64/easylist.png create mode 100755 data/64x64/easylist.psd create mode 100755 debian/.qtcreator create mode 100755 debian/README create mode 100755 easylist.desktop create mode 100755 editform.cpp create mode 100755 editform.h create mode 100755 editform.ui create mode 100755 globals.h create mode 100755 list.txt create mode 100755 listform.cpp create mode 100755 listform.h create mode 100755 listform.ui create mode 100755 main.cpp create mode 100755 mainform.cpp create mode 100755 mainform.h create mode 100755 mainform.ui create mode 100755 mycheckbox.cpp create mode 100755 mycheckbox.h create mode 100755 mycheckboxcontainer.cpp create mode 100755 mycheckboxcontainer.h create mode 100755 qtc_packaging/debian_fremantle/README create mode 100755 qtc_packaging/debian_fremantle/changelog create mode 100755 qtc_packaging/debian_fremantle/compat create mode 100755 qtc_packaging/debian_fremantle/control create mode 100755 qtc_packaging/debian_fremantle/copyright create mode 100755 qtc_packaging/debian_fremantle/rules create mode 100755 slidewidget.cpp create mode 100755 slidewidget.h delete mode 100755 src/data/26x26/easylist.png delete mode 100755 src/data/40x40/easylist.png delete mode 100755 src/data/48x48/easylist.png delete mode 100755 src/data/64x64/easylist.png delete mode 100755 src/easylist.desktop delete mode 100755 src/editform.cpp delete mode 100755 src/editform.h delete mode 100755 src/editform.ui delete mode 100755 src/globals.h delete mode 100755 src/listform.cpp delete mode 100755 src/listform.h delete mode 100755 src/listform.ui delete mode 100755 src/main.cpp delete mode 100755 src/mainform.cpp delete mode 100755 src/mainform.h delete mode 100755 src/mainform.ui delete mode 100755 src/mycheckbox.cpp delete mode 100755 src/mycheckbox.h delete mode 100755 src/mycheckboxcontainer.cpp delete mode 100755 src/mycheckboxcontainer.h delete mode 100755 src/slidewidget.cpp delete mode 100755 src/slidewidget.h delete mode 100755 src/src.pro delete mode 100755 src/systemsettings.cpp delete mode 100755 src/systemsettings.h create mode 100755 systemsettings.cpp create mode 100755 systemsettings.h mode change 100644 => 100755 welcome diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..ea30602 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.ex +*.o +moc_* +*.Debug +*.Release +/debug +/release +easylist +easylist.exe diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..d71e6b7 --- /dev/null +++ b/Makefile @@ -0,0 +1,147 @@ +############################################################################# +# Makefile for building: easylist +# Generated by qmake (2.01a) (Qt 4.7.2) on: wo 27. apr 17:28:19 2011 +# Project: easylist.pro +# Template: app +# Command: c:\qtsdk\desktop\qt\4.7.2\mingw\bin\qmake.exe -spec ..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\win32-g++ CONFIG+=release QMLJSDEBUGGER_PATH=C:/QtSDK/QtCreator/share/qtcreator/qml/qmljsdebugger -o Makefile easylist.pro +############################################################################# + +first: release +install: release-install +uninstall: release-uninstall +MAKEFILE = Makefile +QMAKE = c:\qtsdk\desktop\qt\4.7.2\mingw\bin\qmake.exe +DEL_FILE = del +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +COPY = copy /y +COPY_FILE = $(COPY) +COPY_DIR = xcopy /s /q /y /i +INSTALL_FILE = $(COPY_FILE) +INSTALL_PROGRAM = $(COPY_FILE) +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = del +SYMLINK = +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +SUBTARGETS = \ + release \ + debug + +release: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_default: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_first: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release first +release-all: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release all +release-clean: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release clean +release-distclean: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release distclean +release-install: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release install +release-uninstall: $(MAKEFILE).Release FORCE + $(MAKE) -f $(MAKEFILE).Release uninstall +debug: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_default: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_first: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug first +debug-all: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug all +debug-clean: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug clean +debug-distclean: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug distclean +debug-install: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug install +debug-uninstall: $(MAKEFILE).Debug FORCE + $(MAKE) -f $(MAKEFILE).Debug uninstall + +Makefile: easylist.pro ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/win32-g++/qmake.conf ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/qconfig.pri \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/modules/qt_webkit_version.pri \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/qt_functions.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/qt_config.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/exclusive_builds.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/default_pre.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/default_pre.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/release.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/debug_and_release.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/default_post.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/default_post.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/rtti.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/exceptions.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/stl.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/shared.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/warn_on.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/qt.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/thread.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/moc.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/win32/windows.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/resources.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/uic.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/yacc.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/lex.prf \ + ../../../QtSDK/Desktop/Qt/4.7.2/mingw/mkspecs/features/include_source_dir.prf \ + c:/QtSDK/Desktop/Qt/4.7.2/mingw/lib/qtmain.prl + $(QMAKE) -spec ..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\win32-g++ CONFIG+=release QMLJSDEBUGGER_PATH=C:/QtSDK/QtCreator/share/qtcreator/qml/qmljsdebugger -o Makefile easylist.pro +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\qconfig.pri: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\modules\qt_webkit_version.pri: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\qt_functions.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\qt_config.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\exclusive_builds.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\default_pre.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\default_pre.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\release.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\debug_and_release.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\default_post.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\default_post.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\rtti.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\exceptions.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\stl.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\shared.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\warn_on.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\qt.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\thread.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\moc.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\win32\windows.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\resources.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\uic.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\yacc.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\lex.prf: +..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\features\include_source_dir.prf: +c:\QtSDK\Desktop\Qt\4.7.2\mingw\lib\qtmain.prl: +qmake: qmake_all FORCE + @$(QMAKE) -spec ..\..\..\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\win32-g++ CONFIG+=release QMLJSDEBUGGER_PATH=C:/QtSDK/QtCreator/share/qtcreator/qml/qmljsdebugger -o Makefile easylist.pro + +qmake_all: FORCE + +make_default: release-make_default debug-make_default FORCE +make_first: release-make_first debug-make_first FORCE +all: release-all debug-all FORCE +clean: release-clean debug-clean FORCE +distclean: release-distclean debug-distclean FORCE + -$(DEL_FILE) Makefile + +check: first + +release-mocclean: $(MAKEFILE).Release + $(MAKE) -f $(MAKEFILE).Release mocclean +debug-mocclean: $(MAKEFILE).Debug + $(MAKE) -f $(MAKEFILE).Debug mocclean +mocclean: release-mocclean debug-mocclean + +release-mocables: $(MAKEFILE).Release + $(MAKE) -f $(MAKEFILE).Release mocables +debug-mocables: $(MAKEFILE).Debug + $(MAKE) -f $(MAKEFILE).Debug mocables +mocables: release-mocables debug-mocables +FORCE: + +$(MAKEFILE).Release: Makefile +$(MAKEFILE).Debug: Makefile diff --git a/chooselistform.cpp b/chooselistform.cpp new file mode 100755 index 0000000..25932f9 --- /dev/null +++ b/chooselistform.cpp @@ -0,0 +1,117 @@ +#include "chooselistform.h" +#include "ui_chooselistform.h" + +ChooseListForm::ChooseListForm(QWidget *parent) : + SlideWidget(parent), + ui(new Ui::ChooseListForm) +{ + ui->setupUi(this); + settings = new QSettings(WILLEM_LIU, EASY_LIST); +} + +ChooseListForm::~ChooseListForm() +{ + delete ui; +} + +void ChooseListForm::shown() +{ + qDebug() << "ChooseListForm shown"; + ui->listNameLineEdit->setText(settings->value(SELECTED_LIST_NAME, "").toString()); + ui->listWidget->clear(); + QStringList listNames = settings->value(LIST_NAMES, "").toStringList(); + bool addList = false; + foreach(QString item, listNames) + { + if(item.length() > 0) + { + addList = true; + break; + } + } + qDebug() << "List names:" << settings->value(LIST_NAMES, "").toString().size(); + if(addList) + { + ui->listWidget->addItems(listNames); + } + ui->listNameLineEdit->setFocus(Qt::ActiveWindowFocusReason); +} + +void ChooseListForm::on_cancelPushButton_clicked() +{ + emit signalNavigate(0); +} + +void ChooseListForm::on_savePushButton_clicked() +{ + QList items = ui->listWidget->findItems(ui->listNameLineEdit->text(), Qt::MatchExactly); + QString listName = ui->listNameLineEdit->text(); + if(listName.isEmpty() == false) + { + if(items.count() == 0) + { + ui->listWidget->addItem(listName); + } + settings->setValue(listName, settings->value(LIST_TEXT, "")); + QString information; + information.append("List saved "); + information.append(listName); + settings->setValue(SELECTED_LIST_NAME, listName); +#ifdef Q_WS_MAEMO_5 + QMaemo5InformationBox::information(this, information, QMaemo5InformationBox::DefaultTimeout); +#endif + saveList(); + } + else + { +#ifdef Q_WS_MAEMO_5 + QMaemo5InformationBox::information(this, "List name can't be empty", QMaemo5InformationBox::DefaultTimeout); +#endif + } +} + +void ChooseListForm::on_removePushButton_clicked() +{ + if(ui->listWidget->selectedItems().size() > 0) + { + qDebug() << "Remove" << ui->listWidget->currentRow(); + QListWidgetItem * item = ui->listWidget->takeItem(ui->listWidget->currentRow()); + settings->remove(item->text()); + settings->setValue(SELECTED_LIST_NAME, LIST_TEXT); + saveList(); + } +} + +void ChooseListForm::saveList() +{ + ui->listWidget->sortItems(); + QStringList list; + int size = ui->listWidget->count(); + for(int i = 0; i < size; ++i) + { + list.append(ui->listWidget->item(i)->text()); + } + settings->setValue(LIST_NAMES, QVariant(list)); +} + +void ChooseListForm::on_loadPushButton_clicked() +{ + if(ui->listWidget->selectedItems().size() > 0) + { + QListWidgetItem * item = ui->listWidget->item(ui->listWidget->currentRow()); + settings->setValue(LIST_TEXT, settings->value(item->text(), LIST_TEXT).toString()); + settings->setValue(SELECTED_LIST_NAME, item->text()); + emit signalNavigate(0); + } +} + +void ChooseListForm::on_listWidget_activated(QModelIndex index) +{ + ui->listNameLineEdit->setText(ui->listWidget->item(index.row())->text()); +} + +void ChooseListForm::on_listNameLineEdit_returnPressed() +{ + qDebug() << "Enter pressed"; + on_savePushButton_clicked(); +} diff --git a/chooselistform.h b/chooselistform.h new file mode 100755 index 0000000..390cc79 --- /dev/null +++ b/chooselistform.h @@ -0,0 +1,43 @@ +#ifndef CHOOSELISTFORM_H +#define CHOOSELISTFORM_H + +#include +#include +#ifdef Q_WS_MAEMO_5 +#include +#endif +#include "globals.h" +#include "slidewidget.h" + +namespace Ui { + class ChooseListForm; +} + +class ChooseListForm : public SlideWidget +{ + Q_OBJECT + +public: + explicit ChooseListForm(QWidget *parent = 0); + ~ChooseListForm(); + + virtual void shown(); + void saveList(); +private: + Ui::ChooseListForm *ui; + + QSettings * settings; + +signals: + void signalNavigate(int step); + +private slots: + void on_listNameLineEdit_returnPressed(); + void on_listWidget_activated(QModelIndex index); + void on_loadPushButton_clicked(); + void on_removePushButton_clicked(); + void on_savePushButton_clicked(); + void on_cancelPushButton_clicked(); +}; + +#endif // CHOOSELISTFORM_H diff --git a/chooselistform.ui b/chooselistform.ui new file mode 100755 index 0000000..fc5cb25 --- /dev/null +++ b/chooselistform.ui @@ -0,0 +1,63 @@ + + + ChooseListForm + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + + + + + + Save + + + + + + + + + + + + + + Load + + + + + + + Remove + + + + + + + Cancel + + + + + + + + + + diff --git a/data/26x26/easylist.png b/data/26x26/easylist.png new file mode 100755 index 0000000000000000000000000000000000000000..1f9c0a97dbdc5376d6b5377239f0ed30faebdcd9 GIT binary patch literal 4317 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 literal 0 HcmV?d00001 diff --git a/data/64x64/easylist.png b/data/64x64/easylist.png new file mode 100755 index 0000000000000000000000000000000000000000..8ff8deacde1b3cf3571aee1ce988f3ef46cf954d GIT binary patch literal 10763 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%0A;D{&eGMoWLa$Z5J7q}_7hEb?5?I4jxcK5rc=3zB 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 JPDHLkV1h~))*b)= literal 0 HcmV?d00001 diff --git a/data/64x64/easylist.psd b/data/64x64/easylist.psd new file mode 100755 index 0000000000000000000000000000000000000000..37c865198cd7e1fb0824e212ab92b73599ffccbb GIT binary patch literal 186560 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 jOQ`U8kkMwR{Y%- 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 literal 0 HcmV?d00001 diff --git a/debian/.qtcreator b/debian/.qtcreator new file mode 100755 index 0000000..e69de29 diff --git a/debian/README b/debian/README new file mode 100755 index 0000000..3cb52fa --- /dev/null +++ b/debian/README @@ -0,0 +1,6 @@ +The Debian Package easylist +---------------------------- + +Comments regarding the Package + + -- Willem Liu Sat, 26 Mar 2011 11:17:23 +0100 diff --git a/debian/changelog b/debian/changelog index 6ce0511..8c0b3d6 100755 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +easylist (0.3.23) unstable; urgency=low + + * Added prompt when clicked Uncheck All. + + -- Willem Liu Sat, 26 Mar 2011 11:17:23 +0100 + +easylist (0.3.22) unstable; urgency=low + + * Now the list is also saved under its list name. + + -- Willem Liu Sat, 26 Mar 2011 11:17:23 +0100 + easylist (0.3.20) unstable; urgency=low * Repackaged to reduce package size. diff --git a/debian/control b/debian/control index adc8618..0253815 100755 --- a/debian/control +++ b/debian/control @@ -1,6 +1,6 @@ Source: easylist Section: user/utilities -Priority: extra +Priority: optional Maintainer: Willem Liu Build-Depends: debhelper (>= 5), libqt4-dev, autotools-dev, libhildon1 (>= 2.2) Standards-Version: 3.7.3 @@ -14,139 +14,7 @@ Description: Simple Check list app. as a new checkbox item. The app supports portrait as well as landscape orientation. The app can sort checked items to the bottom and/or from A-Z. As a bonus it has a nice slide up/down transition effect when switching - between List view and Edit list view modes. Multiple lists is supported since - version 0.3.15. + between List view and Edit list view modes. Multiple lists is supported. XSBC-Maemo-Display-Name: EasyList XSBC-Bugtracker: mailto:willem.liu@gmail.com -XB-Maemo-Icon-26: - iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAK - T2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AU - kSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXX - Pues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgAB - eNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAt - AGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3 - AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dX - Lh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+ - 5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk - 5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd - 0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA - 4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzA - BhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/ph - CJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5 - h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+ - Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM - WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQ - AkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+Io - UspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdp - r+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZ - D5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61Mb - U2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY - /R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllir - SKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79u - p+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6Vh - lWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1 - mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lO - k06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7Ry - FDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3I - veRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+B - Z7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/ - 0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p - DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5q - PNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIs - OpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5 - hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQ - rAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9 - rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1d - T1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aX - Dm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7 - vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3S - PVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKa - RptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO - 32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21 - e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfV - P1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i - /suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8 - IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq - YAAAOpgAABdvkl/FRgAAEk5JREFUeNp8mn/QpldZ3z/Xdc59P8/7Y3dDstnsFhMNIYkIStYBEQhk - 6lgCMVWHsOgfnTaQzmg7Y52qLY4piiFEHCqO9RdFwhZxOpVNnP4QTSsNnQk600pJiJM6mEilScxC - Etjsvrv7Ps99ruvbP879bqLYnvef933u573vc59zXd/r+/1ex27+/u8FwAI8CrIgacjsCHDMqFcN - xI9MJiOLoGIEhUYzpwSki2JGM+FUnEQEjcpIsM4kcdyEaaSY4VqxklNcFGRrWJtpTS4YHMiVJzwi - X/5Yav2Qp+0YTnVYWWA4AJW/YZj53Qk3u+KQeSNVkQRezDVhACZcQXjFKcCEZQETE8mg/p1JhaRg - nhAFL0Gk44KliTVO4GDTaFFHK0FLZyHAyqvXmQ8U9z8APwH6jb8+13LNN1/LPB+qx4Ew+0wxvqdI - W8lANUMWuFWSpBi4BSmjRcEdkkSaJ2dORWBOEqQS3KgmnKAZGAV5wa3QLKgG4DiNBMyd9IpMZIqB - uMpcfzesHXIrDyRaW1/GeR/mEfI/Qe1VKRACT5QgKs6KIuESTZVGxWojcao5xRpJRYKgkoLRnOoF - MwgFzQ1LcIJABGtMDiTQaG5I4FK/roYVSDNII+EfN+IToH0AAlz0H5PdIabLSxYgCB/ITJIAnFAh - U0xyUGA29fcXpInJCi2hquEmUkaoUAygUK1g6RQfgDY/HlwOCaJgaRQfMK37isqoNDCxLobJMPmb - gZ93jMEcP7DcZmH11kK8GyprYEojQxQXcvoryKilgCUpwwWoIJuY0jGcShLuNDVwKGZIDqyxTAqB - aBgDpiA1IBwzp4SoJKLBfL0UI9MIOVVGtZGQMJUfqrJ3VAw/t7NTwW/OrDiOzDCrmIPCaRqpJMUr - QQHvoZUqVKs4I9VEIRm8AgOS40pChkxIlbRKoe8QFhTUd9J3cTOKVwrGoAl5v650cOtYk5AE7o2w - 5kH8vSljf4nM1x257PAHpmw0F8j6AwxMIjFGArMOjq7EEswKZsIQIpGcnliBlKgsUDYcEWa4C6lQ - MdaWF5DMDFyFNEiMImNtwkwMMkRSFeD97so5ck1XuvmnKlYWaQXo213nyRpJFmPhQA4EonrSNHZU - coDGkLDCcBWKC5SUUpEFpYi1FTzBQjRLjMTlBGLIgjmkwCwQ0Mrz14sZSiPNSaAoe83Jimik56V1 - e7l4q9EQxigHSwaMdTaePXWaWK3ZWm6waj2ZxRpZwelwaKyZNCPNDA1jcXbPn2P7RQfYt7HFyMhK - zugNcoF8omKkt16QzEickgZy0vvqB0m6d6TLCXMYBZmJvBIZb7ebbnzz2WGx3JSiJ5qPtJh4/ORJ - wsXFW/u5aP8+fLGJ4wy0OWgcoxBMFDkiaVbBJqbz5zn11a9yercxFnjxkcuZAqpNVNRhERCOomCW - TBYUCuQaFafQoTOs4TLkAy36DhZEWjKotmrFIBvIEJWMiaef/TK1jLzuNd/Bt33Lt7CxXLCxtQEa - sAJookRBHgTJkAPp6lhtEztnJ3ZOn+KPPvvH/Okjj/CVU09z0UWXQUAjcNvAWNMI0oOFfCYoE1jB - wwkHvKJoWDrpiXvpoDDHQop1VRgqc3a4OPXsM5zf3eWW77+J13znaxnrgnXryVvMaDQqyVplRi3v - u2COEirJRS8aGMuL+aarruT37vvP3P/f7mfTB5b7Npk0og78VAoTe7XGSCVFc1HNmVMZRDUUE4XE - Sq8xspGGUVNBquCC9ZTsnJ84et1R3njDd1PGASKoCyNlVG+MqpgPHSEysFIhrFMCTbhX0h2icWT7 - MG9+y/fwpb94nK98+Qk2trYQhdTEgLFriaUxSbgLVDsqIdxWSIXiBbJhGOGBos4lMDETVQhLkS52 - z55lpYnr3/AGDl16MatpTlh1pBiAtUF6MqRI6w+sgqbETZ0WWAUJNHDVN13Bd77qVfzbE4+yjmCj - Qip6cTJHBCpgWcECyUgMJKoJwpiso3uHjug776JKVEtHVlAGi2HgGw5+A994xUvY2NxgsR4JAzLJ - mSYv5KgETpIxEjbhiAU2FySxq4QsYMb2xsiV33glBy862FfbgpJlJoCBWyKMKA0PERRKAYUxYbjR - KQQiVXElcnCM5qKKRrEFsoFzcY4D28bhSw4yLjdZ2S6DjOrQ5JiSYkFjo3OgQYx4L0hUSh1xS0pL - IhuFRh03OHjpIax6Z7My/sMn/yP/r3Hzzd/H9a9/Hf/8Xe/i/zduv/12HvqT/0VNCTEBlRbgiw32 - XfQiFuNASfX8cDHghKCUFSUKMCJN4EmtztbGFr/yax/mxD2/xa/+0q9z9bXXsFqdZ3Nzyb6L91M8 - KXvEcx4nT578uonJjUzx5ZMn51h/fmxvb7O9vQ3AM185SdVEnTkholHmQKEOLOvA+cEw67zHLRjV - MBZkUWeWjAQTB7YPcN+nP8XP/fx7OXXqFOfP7bCx3CAaLOsSAyYKg4LCeGHyP/wPb2MCFsCagikA - eOAPH+CBzzzQY95LXyicv3/rrRx72y3cc889PP7USUaDGi0JgVFBxoCzKEApeA2MwhJIG7AsM9mj - c6CAjWGbJ08+ye23386pU6f4Rz/8Q3zHa9/I7uosdTRsMJZuDHQtcAEngbXArO9KmXlqD3oDJU2G - K6hmXHroMo697RZ2dna458QJPAGD2kIgkHUqvMZx7xylur3weaSNjNaQeYfNcUEZCj/7vjt5+OHP - 8+rXvJZ/8e73MpaBlTsGeDF8mNWcd0K9N9wKrmA1c68iiFRnn1YwGm5GSPyDd9wKwG8e/zec2TmH - udG8UNOm+Y3BrIcRJiiVWrp4LkNhc7FgvRtM68CB6gs2t5d8+F9/hOPHj7O1tcV733MHf+vwpZw7 - vctYRsgVZk7ropUpYej6kT0RmTNIhHSBnUpt7wtYGN/27a/k+uuv57HHHuP3fv/3Z2QSpFP9gqTT - nGCGuTFapVlgpXBu5yxP/vkXueKKyxkXA20Sm/uXPPTgg9x5550A/OxPv4cb3/zdrE+voYCb0WwE - DDdRWWOUPSHG4cOHueO970FmHRoxPv/Qg5y4956/krgTwa23vgOA48eP90QXBMZAw5V24aapHle2 - F4bmjJsjJ+49wdFvP8qvf+jDjBtLNjaWnP3aGX7ix3+Cx5/4EsduuYV/8qM/ynR+ImYtMYvE+T5G - Y0BYX7l5XHf0Oo5e90peefQo1x29jkOHj6DsuI8MEt7ylpt46UtfygMPfIaHHvw8eiGQuVFD3WFA - UPpnnSzZbFUAm/sOsJ7W3PVzd/HyV7yCm266kbve/z7+66fv55qrr+UXPvBBhsXA7pnzmNvs13Rx - OCsXsAFmrwjg5FMnue2dtxGmvpqzUMnsoeyCjX37eMcc+x87fvespR3rS8HUSaBgFjEgmtQDqv9J - Oz/xg8fexoOf+3H+5Qd/gZ/6qZ/k85/9LL/0y/+KOgzcecddXH7lFazOTbjPgk4G6jR5DkoGJnIm - AzPiz6I+SSuzluvzcDkY/MDb38729jb3nPgEf/nUk5jtmSnW6Z8KdXNYQATyBAmzwOZwkhkK4QP8 - zHvu4Itf/At+59/fy8MPP4yU/LMf+6cc+8G3ErtrBpKg2yKJEV4pe+4CSSqwHLDYCwDDSEzeRYrB - lM6Ag8Phyy7j2LFj7Ozs8Il/dy+NyoI1LR2zQmQwDGvcBsOsQIgpYTGvkhmYizDRdsX2vk3uev9d - vPxlL0NKbvjb1/Pud/8MGcmqQaJeadX1rNl0IVxqvxl6Pt0AMYURZkhC6jaKZcMiLoTO8ePHOXt2 - h2LBlJDZ1V9hoqTjxQqNQC4cWJEkhmd/qCGCYHUerr32Gn71Vz7EDxx7O7/4gV9k30UHaOeDoUDi - HR6sYNltx+J5ARzE0Pn8XG11IRR63Bkwzn7Rtx69juvf+AYee/RR7vvkfawMCCMYUIluFlh2Jry3 - mcrOJNerxu65FVxsqHW7gzSkYHV24oYb3sAN3/VGFDCdWyGHIWHag/cCmcaQpYcl8NzOGVqcw+qA - 2QDAkSNH+NhvfqS/c/cbALjrrvfzztve2aH2yBE+cvzu+ZpdABUEH/3oR/ijP/zvVMeRjOaNZqLt - nuW5585w+YuhYKTEWGDVDHlFU5DNmXLWBA6rjptMqkgNZ0RFBFATTp16jtXUWA5L8Of95MOHj3wd - mdvc3ubqq6/+OvL214cnyAq1ZaOUgaIFFmf5308+xaOPfYFXvOKbMU2QvZIObkyCpsKQE5IR1n2u - kIOy8yNVoBFmWHFyEl/400f46jPPsO+KbUxr3vSmN83rHVQWZCcw3fQlufFNNzLbWbPY7O5eo9IN - /EaTMY5b+CRokUSuWWxsUUvlk//pdzl16muUssQp5Gw8VTMik7V5tzusF6fZUOk5UCHdwGAcB/7s - 0S/wX+7/NNvblyDbqxADBhgja61Jdckn1oQ6vZi63YsYaDSanJJJVaf+ZsagNW4ZmImQURyGZeV/ - /PHn+PjHjnNuOkfdrgyDM5QBHyvjolCHwlAr4+jURWVZlizqgjIOLEplOYwsliMnn3qKj959N098 - 6QkObC260srs1kw6mWtkRrEOAqvZ0KokhWnezQnPbqY063J1lY2UsSaoqYaZMyS0hIv27eMUp/n4 - xz/OXz71NDd/7/dx5NKDFDlr69XVJEaHVTZGs9nkFZmzBKTwZ3/+BU6c+G3+54MP8aKDlzBsLMiM - Xq5yLye7NTkFFGtdalqwFrgbbo0MCFtQMwh3ViSugmWQtWCvf/31ZxfLcdMkujB0IsXTX32W0YKt - rUvYf2A/2uvM4Htufm8zsYERGDlDpRADzz7zBLtTgDmHL72IFrMgl+NuhHrhdAfLXg/wwGUz7M58 - bP6ld38C2Uz/M1ksFueqzeQptcf+Enfj0MGDnDlzmp3VGXa/tovmRpIxzWkkBoKmczB7Q4Mqbk4Y - 7EZj39ZmV2bRnWhkpCX5AlkZOecOgvALesH2Pp5zK5k6iqpnjzC8FGrvV3RylJ4UTd27SWff9n7S - IZsoZW7caZNiyRjdlx6KYZkQS5p3JlosObRxCS1gigA1ShlpmQwmJEMpcEcmfMb4lmKw7kgkwtwI - Nxyh7NItLcEKIqA1avGuxtDMBNMp3nlfY42HM+FYy973ykAWKMts7xVGZfc58d4iosOn9VYZmT18 - 0gPlQFiSpTFqyeSQATWDNJE5IIK0Rs0FNjvaUne5QaSve+Gt2nDP2roYSqJ1TruafX9Xkik8p97c - yEq1YEQsjN6Ui0aK2TqPPmkT6THbLZ0Ah4wSI0p1V1tCGRBJIETBY+yfeWen8kZmMKkQHj0XSiWz - UtKZrHyuvOTKK3MYF39nd9UYvd8qJdocIkVOUdKYCPV4DANpDdoTLXuaInpLNdZENsICk/cVB1KF - QuDZDdo1E0NWxIQUBJVRgSmRYMrolH5OFgNkE1J2yNjYfJtvLLc+6Pi9CUzAmsQnR9kpcGrFZEGk - 4WpgjUmNpu4m9Q7k2BsRabjWrPr+dfeN1Vxfg1QjMjhPEBRChTUrAus6RI11BLvZHbpU7cmqvV0D - 0pkQXuL+4v6Im9Mo/C5uKGunBhYUm2A2tpoqxQaq9V5VzS4mJGedjdAEGfRGSeuTtW7WThht5tHO - mgCUQUsoMWIJRaXHOGvSQApa9FavueEkbhONBmmU8BzY/C2m6XS55mUvpQz+kNZTmabVDajM9rd1 - tNCciTRa5gX5mXvMfoZAzW5GYvRudjcKiqClQEI4WJl5U/T/s368gZyBwMrcxp1DiUTZG95SzxeX - PuTj8D4sZ4UnKNV+Wl4eT7U+wVk9CyAait5PRq3POS/Ito7lGSgdTYA1Ov5CxJ4ABGJC2Z5XlOoQ - qza7IjFBTi9QnDEbJv2BkkHmfWUs76Ikk9oLzkoITPpWuX2K4FVEP8zhCW0W/B1uWy9n3qgMSNHp - AM6Q0Z226DtilmSIKcRo0R3YXOOqYF2FpfeDJubqFn0khdLrlebWqvV6sCz+a3UoP+luZ5h1xF85 - 7BFenlsu6quHzLuxjZuzxCG3BRa94eZ7sR3eQ8WC0SAEUu/wF7ee/Fbw2Y1ep3B3qot1dp3hMnY9 - eiW1QpFYVLEr6xVfTrOkAGT+QRon3MtvRMTzu/g3nVaRhEy3LbcWR578P48fO3v23FWHLz38I/sv - vtjSosdkKwwYURuLNCb15G5MLMeBoBERmC0ZrbKRE73H0vpRgkxqQvFg8BEvA6udc3l692x6cUtz - TU14Tl977MtPv/XlL7niocViuXPm/OrrhM3/HQDSs+suiKgVJAAAAABJRU5ErkJggg== +XB-Maemo-Icon-26: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAEk5JREFUaIF9mm/wbldV3z9r7b3POc/v3sQQzJ+bPxhkLFMRSqBGEiRRwRgICeAkmL6q4U1bm86047SCgUBqh/hGWp22IwzOOH3RF15QSUlqocTGoRWlzR8F24mRNMZIYihGcu/vec7ee63VF/u5NzcQ2K+e85zz7GevvdZe6/v9riN85yE3vu3GH1Ht96lA9wRMNIXZVnaibFwhN7plJEFGgQpkdigLKwa0AAQIZZEZ2LHrkLNTEHaAh1vYxKKJYMsaYM2+67Of/ezJb7vAF/vy5ptvTid3J99B55ORMwuJ2oXIirDDe2LOFUMoQLWZOe0IYGUh9p+EhRKwekc0gXXmPLGzxhKGAF0zHgVPO7IJpImOsOlb0GCNGadec+TIkf9+/Phx+44GfPCDH9QH/9eDv5xEbtNo7ExYcmJHZ2JmpQPCFJ1AWC2xJGc1R6Qwp8aOhTkqLorRiQ6koEhCzdilhJAJlIVgy44NEw0l+Y4qEyoGTCQqzTNLVEwFxLn8dVekO++800+tOZ1pwLlHzv1ddH13Q8CClCEcukwUViISG4HqhkVBc6MLZFUKDY+ZILBIaFQmUUwEfMKi05MgAZlMiGCsBIWMk2hUVbDOJBMmgVMRSSQJkhU6ztNP/dV5t/y9W37n/vvvDwA9tfgbbrjhx1raXROuTGFYUVYUxVGECAFztgg5gaR1WB8zmYyjNA3UV3JSYv/dLEAS0n7xyILEFolAUMQVCVhJhCc0zTSphOi4jpUmzjY7RsLxn/niA3/wj09Fz2kDJvxzkGmSWU2wrkgYTcEAJJHLhFCpNpEjYUyMUEsYmeKGpUzzlS5BAsxmlENKd3JAYYewACsRgiCgiWRQaCQcAyK2FE2gCSeTAhbJmDka86+88203+mkDbrnllovcZxbSiBkpSILUhR4zGUcQ1giCRORKi0RGSLohJ0elk2VGmJBQxgmY8GxozEQqFAk8HFcniUBPZK0QMKUJDdBozAQ5FPOEEwgTeFAjyBlMKlWD0wa0Vp80hMoKLCBOoJQkgFDoCCNrZJzJZR9WSpKG0kGg4kAQNJQNqzWKVWoopkLzwmyZTkMIcloBR+kEID48O6IumKloV7J1EkJOFd3noSQdQOSiiy566RU/eOXXvDeaZrQ1UlagQwQpzyQ3tsxM2uhAuKDqCA1FWANyL0gJzBuFGaSj4RySUCCF0VxJqaEkAidsIiUBE1JasVBcGxozDWfxRNWKMGEBhU7VQK0wYTTh9TmL/GhJwq4nZhM8FSZrxJxYe+Pk33ydOW/ocZJKQdjS2JAxFCHROBmFmZVaA0JRKtKN5ejENM3EWmlamCQRlojUgAlJFQQiZaAgFuQ4oMtKCaUJp306m+HJmU0IN0wSPdYb5Jo3XRPnnXsuhw4pOpNAKjOPPfZnLOcc5fBvDllE2NqI/8IWYyH2O9twMoKzEkx0GlNKTFTK2edz8q+/ziu/9zKe3XYOiiOuVOkISiaovZA06BpMAe7g2ikoDUVphAuWCm6d5EEk6C7MFPJy1kzve7dKJjC+8sRXyHnDy85/OW+/9TpChLOWAkzULCwYqRea7OgJFluw1DEHj85aBa877v7M7/D4iS2PPvEY51/8ffS+JaKBHCGx0jE8V5IJE4UmDTRhNtNzAJkJJ0XC3CBlemokFBXDCdLfuuyVHypFETcsnF5P8NzhIVdc8Qbeft2b+e6XnEtZDiDPLHkChZKCnhM5b1h0ppdOypmcDpiSc7A5ynJk4bJXvIww4ytPPMkBwTwLKooSVBoTG4wgC4gEjcB7ULITPpEDWnQsFZAVNZg1EBckbTCE3KPTQykqdIwyncWlx45y3Y9dw9GXHkNNSAhH2JI0WMhgB+xEKRgtK6UvKEFQOeAcdjk46sZZBxeTr72Wxx/7c9y3CAs7A3BKHLCjgiRWGkRgBFMKcszDuxaUFCRZsa5A0GwhdAdtJSSQN//4W2IzbTAxZoMvPfGn/MovfoTLLrkUd8d0IUVQAxaECljeMRm4LHgKpgisG5GC5I7ITEijWUFT5+tPPsNt//yf8bKXv4LsDXAsZmYark6VEYa7VJkscCacShpHm20OMIgBh1ARUg7UISdTJDKYIQUuOLiAY8cuQZaZgyg0gkQl9YWMkYGczoFS6b7QbIeKMy2FCCFrZwsohTmURWfyhRdxzpGzkd6w4kyWcSprBlwQYM0rGDQJQmVk8VSwZBABpwoaDSfQyKzSydAgg7YFCFZ2HBwcMOWJiKAAsGHOAPkM6DeRcTLTC+GtFDYRZ1wLZeOsAUFBqPzWPXfzYuPhhx7kjtv/JY3Gvf/5nhd95tR46MGHuf2Dd5LNA4+KkFm74h5cfOwSTmy/gXTByQTOkp3VM5Iq0QWYEVYiQLOwmTL/+0+/wpvf8sPc86nP8JpXv4adVSTgvCNHEDtkzoPqnBpvf9u7SFpxBe+CiBJ5QnrjXddfTxXABMkDjq8u3PvpTwFw92/9BnOsaEiQXPFUgZWZAmXDLEopM6UEUgqVmayNTSiSBU3KJm3QkljSwte+8Rzv+/n3cvJk56t/8TjL5gBlZtaZohMVZY11jwz3PsyVplA8EAo5jGiHEEF1KASq84j/MLBBXx586CG+8MBDIJCt+x6/B46jwCYFLU2IQJApAUlAPBHMiDiTBw7MUpDS+djHPs59993H333967j2re+g1pW5QACIkmQCE/QMCrXre5aJoKxUEQSFFNChuQCOZqF75vLXvQqAT3zyOOoMA9YGR6ITyUBmTsTYXVEgwYGDSaJ0Y5WjlLRjExtqbgRCWSZe/epX8eijj6Ii/Lff+wNS7VScAQUr5SBjUZlTUP15C5IkcnSqDGxUYhxRaUCawFY0dcyCN139Bt73c+/lH73nPTz+1DOQMqtmckgFHHqCsjIRoBBZSSqoJhJCaDCRIBItYqRKdcycRx99FIB3vvNdeNsiTMwk4JCuiWDAkN03eSDlhHVIqhhBeKAiw2tRiSQkT3hybv37Pw3A4089TRZoYagLKiGIMIw4TTBAY2KigCSEYDn7bHQWXMAVLDlnnbXw0Y/+GgCv+f5X8ZFf+tdMMWEaWAq6FExm3IWZHUK8gIVXX+lk1NsAcjDWIoAKIkKVys0/eRMXXnghJ06cGLcCxAW1iuJKuIwfGbT95CWN+F0OZn73/vsQET7+8V/nyNlnMyUlTjzHD77+Cn72Z2/jzjs+wMNf/hIXnncBkYOioAI5ZSYJcoJOGSt7PsNy73+6l3vv+U1++557+PS993DDTTfhBmIDYmMgIfz0rbfy1FNP8VPv/ilgrFEAyUK26EMGiWF92W/RtH/Q3fmulxwD4Bfv+lf8wKu+n6vfeBX/4hfu5H8+8EUA7rj9Duqu7uWUMbvKQJbPjwVonKosANdfdz2mgp9CtCKICy6N7GAqHDt2EQDHjx8fUcKAFOADrZoHckZg5n2mjr1eUXeNH7ri9bz/jg/wF0/+OT9z2z/giSee5N999FcBuPTSS0CVHkpEQAIJmCJOzwGQWPcZ54xhINHpMT4rbRB/no+ld998Mw89+CD/5d7f3lfkMYk4YBN6zpGzkbYjvCIWdBnb1h1IMEmi1i133v4Brn7T1fzJl7/M97ziUsyMf/ieW/mzR/8v67pyEH2wKyBC2Mq8r9tl/58N8zwyzGmrBiQ4iAEnDi3jAlkykLjrw3fx1re+lZ//ufezY0aAZiPt9shoWtFIAXlC3VhDKHupKHSEQhMjxwxufPiuuzj//PMB+IG/87f5hQ/fhSpEzNip4HAgB6KOeeFU5XJGWJ/pldjjoAgHHQcTr2DBa197OZdf/tpTEUkSw6SRHERB6aQ+oZI6ER3yjAG2d/LkY9/cnU6jM3HVG6/kV3/53wLwax/7ON99wQWwhdBOjf3ifI8SwwhNSDqFnzYkETTOPBhC1xhx7bCIkXQc3H/yT28D4PgnPkFLULyM+pYFDUEkyJrIKRJdE96UDSvPyczhYeMgK60FkyYMyKasJ7a84x034h7UNYjDRs+djQm7pER3KIqboySS7CjMPHe4JelKZwsxn17+vZ/5NN88bn/v7Tz08INceOGFANx8003cfNNN3/IcwPVvfydaSKgnPK2sBIusbHcVTJjSINQlKT0qkTOI0E4GEeBuqAlrAsTpaWaffCEKbgMO9OqjmtuCvlDN/JZhAmH6HZ953oFKbiIoCbUZZ8fJXef/PfM0Z7/sUlwC70aSTrBAd0Jhyo1tfz4UYi+Xh1dwUKkDigy7eO5rT+FrRWKlysSbr71uL/DuOGChU/dC2Aah0jGuv/bHx0awYySCzkBGhcYOJcjzOaRLLrvsQ0JCYgeyMM+JP3rwYa66+ko200vGT6MQuTELVAPTjqjivhDZQfqgSwYUIZShqInw7F9/nffd8X7qqjjGpINxBSszMzvfYhKkDmgd0k2f6aoIh3QmGivhuo/9ijDjCAfiKL2jUTGfmdhRvfHlP3mET33yN9i2Z+lqhDTUhvKmyRDZi7LZQZ1kM7Nn0MLCjPiQGNu6cvfdn+L//PEjSD9E8hDBFmmITdS+I1SYQyDPtL1UO+XRX8CHTDn3hGlhq0GwsMaOzgjddNnLL/3QJmXMO92hzIVd63zp4Qd45q+e5YqrroAIZg9qOK6BezABqzvROyWMLkEn0F5JYVhzfunffIRPHP+PrKlwztkbOo7KEH88dYqDaxnyinXECwiY9+EpcSbprDoz2Q4nMFGkg8pE0kCuuvKq2Gw2w+UDiJLywiOPPcbLj53DiROOx9DHlA4UlB1bnAlhZTpDglI2OJWFWSAdPeCrX/1Lvu97v4feRutJmdAUmHcigiyBhlIpRK5MDuaByx6fnQIJloE2iImNftVmmZE3/tCVsRw5GDDgjJFTYm2N2iqaM4SRKQwlX6gizAEyCCdb2TIzofv6+1zfciQXpmmim+2z04t2tIgYutCY7ds+9S13jh7dkM1BkNFZYYiwiNLNyCR02SAOoqOqGgeAsHjgMs4uAUf8gKEXByHG0bzgDt0M946mjJuQMAxBGTpqaOwbH4o7qO6BZeznFgDBT5shp+Fc94TmSZAwcAPv9Mh7oCSsqZK8s1WnrYH1hHWh1pNsu+Gts1sFaZV+ahcDhIxWIXfAOmIZbcGa1sFtw6i6AxeaKNUVWGlpi7cBi5vuEFesGVglTEndyHXF2w6sMltFiyxUc9SDtQdYZ5UO4iwmdBMmazRhwARtTDI6lxBkWcfpCGji+90EkhHIfiuDpjDZDFYImUcWoyHRGCrnQmkHeBhhgVig4jRtVAo9NyCIvFCZUA+6gIa345omKjCJMDGwT3Oo1ogQSheERiOhrUGMVpOwMqj9ikSgfUcVkL5i3mhUwiaaxECRPegSlDDEhj5aWkKjI7biMTo36g0zZxc7MpkuTrSG+5ByCkZD2XU7KgA3vuXGi545fPZJVTAqc5uoGkjqpAhCAmNmCkekswIlhB3BEUlYzJh3IDOnxiFBCgjpZIeiwhYIy2QyNQVl3wsTVmDGraHMpOh07STNWOjQnXTAboH9/wuJHf/j8384Cv7d//Xuv/QhoIw+u3Sm1AhjFCRXJjKzloFVTXBX1CcqHZeKh1DYjVQnHZMgbKYmRoy7gDZEKuqNbjIIiQU5EqozmiouQwTttqegyQg6STuijWJD3U5tM7LlqZSkHliMeA4cs8FfzTqaZozKYY/RKQvoEgiGm+7zV9BkiDVDFnFQY+6jOSh7zuoygY2qjNm41k70fe7XBXyHSANzxMecjTZou8Lcje7plXBGm/X3v/B5aRL3E6MjaSGI7TGNrdhqWARE308MmA8BqgfJVtwV3wHUPSk3amNfAGV/NtbBSOwU+zBs1yEM+krYbhQGN6Ah4eM6Oh6Ktf7vr/nC76fPf/Hzj8A3deqffOKJ/3DxpZe+1Ltcob6jUsgBa+zFMjHcKolCSxUkgwoasNM92NKR00+XH4GdKSWcXSRCG6mnwcA69L1kLgFbcVIE4goyGNoaiqqw2zfEr/vDn3jDndx/Ggq/WNGTa374KtdWOOQbmM/DiASzM0QZhG0EJWTEoFS6zcBKzhP0iulM0qGF9sho1gGH+0pOM+FjzuzDWcUA7TQfryIg4CIkXxGZkDlxsCyv/NznPvfICxb7Iga84P7FF1zwI+e/9Lz7zr3oYvIEBIQ52TN1MjYmrF5QgtYqZx05wGK7bxpmFk0owepB2BZNZbxmYJk6dWad6KFMIhzaITjMeeLZk9s4a1J54I/++OjTTz/9bV+3+f+3fmMOZit+5gAAAABJRU5ErkJggg== diff --git a/debian/copyright b/debian/copyright index a283cb7..2beb900 100755 --- a/debian/copyright +++ b/debian/copyright @@ -1,15 +1,15 @@ This package was debianized by Willem Liu on -Tue, 07 Sep 2010 13:56:12 +0200. +Sat, 26 Mar 2011 11:17:23 +0100. -It was downloaded from http://gitorious.org/easylist +It was downloaded from Upstream Author(s): - Willem Liu + Willem Liu License: @@ -30,7 +30,7 @@ License: On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. -The Debian packaging is (C) 2010, Willem Liu and +The Debian packaging is (C) 2011, Willem Liu and is licensed under the GPL, see above. diff --git a/debian/rules b/debian/rules index 510afce..46d61ec 100755 --- a/debian/rules +++ b/debian/rules @@ -1,54 +1,91 @@ #!/usr/bin/make -f -APPNAME := easylist -builddir: - mkdir -p builddir +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp -builddir/Makefile: builddir - cd builddir && qmake-qt4 PREFIX=/usr ../$(APPNAME).pro build: build-stamp -build-stamp: builddir/Makefile - dh_testdir - # Add here commands to compile the package. - cd builddir && $(MAKE) - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - # Add here commands to clean up after the build process. - rm -rf builddir - dh_clean +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + qmake + $(MAKE) + #docbook-to-man debian/easylist.sgml > easylist.1 + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + + dh_clean + install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/easylist. + $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/easylist install + - # Add here commands to install the package into debian/your_appname - cd builddir && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/$(APPNAME) install # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs - dh_installexamples - dh_installman - dh_link - #dh_strip --dbg-package=dicer-dbg - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + # dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb + # dh_shlibdeps # Uncomment this line for publishing! + dh_gencontrol + dh_md5sums + dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure diff --git a/easylist.desktop b/easylist.desktop new file mode 100755 index 0000000..d0c8e55 --- /dev/null +++ b/easylist.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Name=EasyList +Exec=/opt/easylist/bin/easylist +Icon=easylist +StartupWMClass=easylist +X-Window-Icon=easylist +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable +Terminal=false + diff --git a/easylist.pro b/easylist.pro index 9b32c1c..0a17108 100755 --- a/easylist.pro +++ b/easylist.pro @@ -1,8 +1,77 @@ -QMAKEVERSION = $$[QMAKE_VERSION] -ISQT4 = $$find(QMAKEVERSION, ^[2-9]) -isEmpty( ISQT4 ) { -error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4"); -} +#------------------------------------------------- +# +# Project created by QtCreator 2010-09-07T13:50:39 +# +#------------------------------------------------- + +# This needs to be removed in order for the binary +# to be chmod to 755 in the debian package. +QT += core gui maemo5 +TARGET = easylist +TEMPLATE = app +DEPENDPATH += . +INCLUDEPATH += . +DESTDIR = . + +SOURCES += main.cpp\ + mycheckbox.cpp\ + mainform.cpp \ + mycheckboxcontainer.cpp \ + systemsettings.cpp \ + listform.cpp \ + editform.cpp \ + slidewidget.cpp \ + chooselistform.cpp + +HEADERS +=\ + mycheckbox.h \ + mainform.h \ + mycheckboxcontainer.h \ + systemsettings.h \ + listform.h \ + editform.h \ + slidewidget.h \ + chooselistform.h \ + globals.h + +FORMS += \ + mainform.ui \ + listform.ui \ + editform.ui \ + chooselistform.ui + +CONFIG += mobility + +unix { + QT += dbus + #VARIABLES + PREFIX = /usr + BINDIR = /opt/easylist/bin + DATADIR = $$PREFIX/share + + DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" + + #MAKE INSTALL + INSTALLS += target desktop icon26 icon40 icon48 icon64 -TEMPLATE = subdirs -SUBDIRS = src + target.path =$$BINDIR + + desktop.path = $$DATADIR/applications/hildon + desktop.files += $${TARGET}.desktop + + #iconxpm.path = $$DATADIR/pixmap + #iconxpm.files += data/maemo/$${TARGET}.xpm + + icon26.path = $$DATADIR/icons/hicolor/26x26/apps + icon26.files += data/26x26/$${TARGET}.png + + icon40.path = $$DATADIR/icons/hicolor/40x40/apps + icon40.files += data/40x40/$${TARGET}.png + + icon48.path = $$DATADIR/icons/hicolor/48x48/apps + icon48.files += data/48x48/$${TARGET}.png + + icon64.path = $$DATADIR/icons/hicolor/64x64/apps + icon64.files += data/64x64/$${TARGET}.png + +} diff --git a/easylist.pro.user b/easylist.pro.user index 6fdddd6..f3976e7 100755 --- a/easylist.pro.user +++ b/easylist.pro.user @@ -13,93 +13,93 @@ ProjectExplorer.Project.Target.0 + Desktop Desktop Qt4ProjectManager.Target.DesktopTarget 0 + 0 0 - - qmake - QtProjectManager.QMakeBuildStep - + + + qmake + qmake + QtProjectManager.QMakeBuildStep + + false + + + Make + Make + Qt4ProjectManager.MakeStep + false + + -j + + + + 2 + Build + Build + ProjectExplorer.BuildSteps.Build - - Make - Qt4ProjectManager.MakeStep - false - - -j - - + + + Make + Make + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean - 2 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - C:/dev/cpp/easylist-0.3.20-build-desktop - 20 - 2 - true - - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - 2 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 + 2 false + Release Release Qt4ProjectManager.Qt4BuildConfiguration 0 - C:/dev/cpp/easylist-0.3.20-build-desktop - 20 + C:/dev/cpp/easylist-build-desktop + 11 2 - true + false - 2 + 1 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + No deployment + No deployment + ProjectExplorer.DefaultDeployConfiguration + + 1 - src + easylist + Qt4ProjectManager.Qt4RunConfiguration 2 - src/src.pro + easylist.pro false false - false false + 3768 + true + false 1 @@ -107,131 +107,371 @@ ProjectExplorer.Project.Target.1 + Maemo Maemo Qt4ProjectManager.Target.MaemoDeviceTarget 1 + 0 0 - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - - true + + + qmake + + QtProjectManager.QMakeBuildStep + + false + + + Make + + Qt4ProjectManager.MakeStep + false + + -j + + + + + + dpkg-buildpackage + -sa + -S + -uc + -us + + C:/QtSDK/Maemo/4.6.2/wbin/mad.cmd + false + $BUILDDIR + Custom Process Step + + ProjectExplorer.ProcessStep + + 3 + Build - Qt4ProjectManager.MaemoPackageCreationStep - - true - - - 0.0.1 + ProjectExplorer.BuildSteps.Build - 3 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - + + + Make + + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean - 1 + 2 false - Debug + Debug + Qt4ProjectManager.Qt4BuildConfiguration 2 - C:/dev/cpp/easylist-0.3.20 - 27 + C:/dev/cpp/easylist-0.3.23 + 4 9 false - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - - true + + + qmake + + QtProjectManager.QMakeBuildStep + + false + + + Make + + Qt4ProjectManager.MakeStep + false + + + + + + dpkg-buildpackage + -sa + -S + -uc + -us + + C:/QtSDK/Maemo/4.6.2/wbin/mad.cmd + true + $BUILDDIR + Custom Process Step + + ProjectExplorer.ProcessStep + + 3 + Build - Qt4ProjectManager.MaemoPackageCreationStep - - C:/dev/cpp/easylist-0.3.20/src/easylist.desktop - C:/dev/cpp/easylist-0.3.20/src/data/26x26/easylist.png - C:/dev/cpp/easylist-0.3.20/src/data/40x40/easylist.png - C:/dev/cpp/easylist-0.3.20/src/data/48x48/easylist.png - C:/dev/cpp/easylist-0.3.20/src/data/64x64/easylist.png - - false - /opt/easylist/bin/easylist - - /usr/share/applications/hildon/easylist.desktop - /usr/share/icons/hicolor/26x26/apps/easylist.png - /usr/share/icons/hicolor/40x40/apps/easylist.png - /usr/share/icons/hicolor/48x48/apps/easylist.png - /usr/share/icons/hicolor/64x64/apps/easylist.png - - 0.3.19 + ProjectExplorer.BuildSteps.Build - 3 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - + + + Make + + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean - 1 + 2 false - Release + Release + Qt4ProjectManager.Qt4BuildConfiguration 0 - C:/dev/cpp/easylist-0.3.20 - 27 + C:/dev/cpp/easylist-0.3.23 + 16 9 false 2 + + + + true + Packaging for Maemo + + Qt4ProjectManager.MaemoPackageCreationStep + + + Deploy to Maemo device + + Qt4ProjectManager.MaemoDeployStep + false + 1 + + C:/dev/cpp/easylist-0.3.23/easylist_0.3.23_armel.deb + C:/dev/cpp/easylist-0.3.23/easylist_0.3.23_armel.deb + + + 192.168.0.100 + localhost + + + + + + + 2011-04-26T21:01:00 + 2011-03-26T11:43:07 + + + + + dpkg-buildpackage + -rfakeroot + -sa + -S + + C:/NokiaQtSDK/Maemo/4.6.2/madbin/mad.cmd + true + $BUILDDIR + Custom Process Step + + ProjectExplorer.ProcessStep + + 3 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy to Maemo device + + ProjectExplorer.DefaultDeployConfiguration + + 1 - src/src.pro - New Maemo Run Configuration + src + Qt4ProjectManager.MaemoRunConfiguration - 1 - - - - + 1 + + src/src.pro + + false + + 3768 + true + false + + 1 + + + + ProjectExplorer.Project.Target.2 + + Qt Simulator + Qt Simulator + Qt4ProjectManager.Target.QtSimulatorTarget + 0 + 0 + 0 + + + + qmake + + QtProjectManager.QMakeBuildStep + + false + + + Make + + Qt4ProjectManager.MakeStep + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + Make + + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + C:/dev/cpp/easylist-build-simulator + 3 + 2 + false + + + + + qmake + + QtProjectManager.QMakeBuildStep + + false + + + Make + + Qt4ProjectManager.MakeStep + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + Make + + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + C:/dev/cpp/easylist-build-simulator + 3 + 2 + true + + 2 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + No deployment + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + easylist + + Qt4ProjectManager.Qt4RunConfiguration + 2 + + easylist.pro + false + false + + false + + 3768 + true + false 1 ProjectExplorer.Project.TargetCount - 2 + 3 + + + ProjectExplorer.Project.Updater.EnvironmentId + {b8d36906-12a9-4298-9c87-7974a94334b0} ProjectExplorer.Project.Updater.FileVersion - 4 + 8 diff --git a/editform.cpp b/editform.cpp new file mode 100755 index 0000000..8459430 --- /dev/null +++ b/editform.cpp @@ -0,0 +1,36 @@ +#include "editform.h" +#include "ui_editform.h" + +EditForm::EditForm(QWidget *parent) : + SlideWidget(parent), + ui(new Ui::EditForm) +{ + ui->setupUi(this); + settings = new QSettings(WILLEM_LIU, EASY_LIST); + shown(); +} + +EditForm::~EditForm() +{ + delete ui; +} + +void EditForm::shown() +{ + ui->textEdit->setText(MyCheckBoxContainer::getInstance()->getListText()); + ui->textEdit->setFocus(Qt::ActiveWindowFocusReason); +} + +void EditForm::on_savePushButton_clicked() +{ + qDebug() << "Save"; + settings->setValue(LIST_TEXT, ui->textEdit->toPlainText()); + SystemSettings::getInstance()->saveCurrentList(); + emit signalNavigate(0); +} + +void EditForm::on_cancelPushButton_clicked() +{ + qDebug() << "Cancel"; + emit signalNavigate(0); +} diff --git a/editform.h b/editform.h new file mode 100755 index 0000000..913f12b --- /dev/null +++ b/editform.h @@ -0,0 +1,39 @@ +#ifndef EDITFORM_H +#define EDITFORM_H + +#include +#include +#include +#include "mycheckboxcontainer.h" +#include "slidewidget.h" +#include "systemsettings.h" +#include "globals.h" + +namespace Ui { + class EditForm; +} + +class EditForm : public SlideWidget +{ + Q_OBJECT + +public: + explicit EditForm(QWidget *parent = 0); + ~EditForm(); + + virtual void shown(); + +private: + Ui::EditForm *ui; + + QSettings * settings; + +signals: + void signalNavigate(int step); + +private slots: + void on_cancelPushButton_clicked(); + void on_savePushButton_clicked(); +}; + +#endif // EDITFORM_H diff --git a/editform.ui b/editform.ui new file mode 100755 index 0000000..12869bb --- /dev/null +++ b/editform.ui @@ -0,0 +1,55 @@ + + + EditForm + + + + 0 + 0 + 400 + 300 + + + + Form + + + + 0 + + + 0 + + + + + 0 + + + + + Save + + + + + + + Cancel + + + + + + + + + + + + + + + + + diff --git a/globals.h b/globals.h new file mode 100755 index 0000000..fa4c1ae --- /dev/null +++ b/globals.h @@ -0,0 +1,20 @@ +#ifndef GLOBALS_H +#define GLOBALS_H + +#define WILLEM_LIU "WillemLiu" +#define EASY_LIST "easylist" +#define LIST_TEXT "ListText" +#define LIST_NAMES "ListName" +#define SELECTED_LIST_NAME "SelectedListName" +#define DBUS_KEYBOARD_SLIDE "/org/freedesktop/Hal/devices/platform_slide" +#define CHECKED_ITEMS_TO_BOTTOM "CheckedItemsToBottom" +#define LANDSCAPE "Landscape" +#define PORTRAIT "Portrait" +#define AUTO_ORIENTATION "AutoOrientation" +#define LIST_TEXT "ListText" +#define SORT_A_Z "SortAlphabetically" + +static const int BACK = 0; +static const int FORWARD = 1; + +#endif // GLOBALS_H diff --git a/list.txt b/list.txt new file mode 100755 index 0000000..df63062 --- /dev/null +++ b/list.txt @@ -0,0 +1,83 @@ +10: Derrida, Jacques. "Structure, Sign, and Play in the Discourse of +11: De Man, Paul. "Semiology and Rhetoric." In The Critical Tradition, +12: Brooks, Peter. "Freud's Masterplot" and "The Dream-Work." In The +13: Lacan, Jacques. "The Agency of the Letter in the Unconscious." In +14: Eliot, T. S. "Tradition and the Individual Talent." In The +15: Deleuze, Gilles and Felix Guattari. "Introduction: Rhizome." In A +16: Jauss, Hans Robert. "Literary History as a Challenge to Literary +17: Benjamin, Walter. "The Work of Art in the Age of Mechanical +18: Jameson, Fredric. "The Political Unconscious." In The Critical +19: Greenblatt, Stephen. "The Power of Forms." In The Critical +20: Woolf, Virginia. "Austen-Brontë-Eliot" and "The Androgynous +21: Gates, Jr., Henry Louis. "Writing, 'Race,' and the Difference It +22: Said, Edward. "Introduction to Orientalism." In The Critical +23: Foucault, Michel. "The History of Sexuality." In The Critical +24: Fish, Stanley. "How to Recognize a Poem When You See One." In The +25: Knapp, Steven and Walter Benn Michaels. "Against Theory." In +3: Gadamer, Hans-Georg. "The Elevation of the Historicality of +5: Wimsatt, William K. and Monroe Beardsley. "The Intentional +6: Richards, Ivor A. and Monroe Beardsley. "Principles of Literary +7: Eikhenbaum, Boris. "The Theory of the 'Formal Method.'" In Russian +8: Levi-Strauss, Claude. "The Structural Study of Myth." In The +915-25 and pp. 932-39 +9: Jakobson, Roman. "Linguistics and Poetics." In The Critical +Against Theory: Literary Studies and the New Pragmatism. Chicago: +Approach." In The Critical Tradition, pp. 1002-14 +Bakhtin, Mikhail. "Heteroglossia in the Novel." In The Critical +Bhabha, Homi K. "Signs Taken for Wonders." In The Critical Tradition, +Bloom, Harold. "A Meditation upon Priority." In The Critical +Brooks, Cleanth. "Irony as a Principle of Structure." In The Critical +Brooks, Cleanth. "Irony as a Principle of Structure." In The Critical +Butler, Judith. "Imitation and Gender Insubordination." In The +Critical Tradition, pp. 1023-30 +Critical Tradition, pp. 1255-62 +Critical Tradition, pp. 1707-18 +Critical Tradition, pp. 500-08 and pp. 882-92 +Critical Tradition, pp. 537-41 +Critical Tradition, pp. 775-84 +Critical Tradition, pp. 860-68 +Criticism." In The Critical Tradition, pp. 764-73 +Disturbances." In Studies on Child Language and Aphasia. The Hague: +Empson, William. Seven Types of Ambiguity. New York: New Directions +Fallacy." In The Critical Tradition, pp. 811-18 +Formalist Criticism: Four Essays. Lincoln: University of Nebraska +Guillory, John. "Cultural Capital." In The Critical Tradition, pp. 1472-83 +Horkheimer, Max and Theodor Adorno. "The Culture Industry." In The +Inflections: Literary Investigations in Historical Method and Theory. +Jakobson, Roman. "Two Aspects of Language and Two Types of Aphasic +Kolodny, Annette. "Dancing through the Minefield." In The Critical +Makes." In The Critical Tradition, pp. 1891-1902 +McGann, Jerome J. "Keats and Historical Method." In The Beauty of +Morrison, Toni. "Playing in the Dark." In The Critical Tradition, pp. 1791-1800 +Mouton Publishers, 1971, pp. 67-73 +New York: Oxford University Press, 1988 +pp. 1875-99 +pp. 882-92 +Press, 1965, pp. 99-141 +Publishing Corporation, 1966, pp. 16-19 +Reproduction." In The Critical Tradition, pp. 1233-48 +Suggested: Barthes, Roland. "The Structuralist Activity." In The +The Critical Tradition, pp. 1129-48 +the Human Sciences" and "Différance." In The Critical Tradition, pp. +Theory." In The Critical Tradition, pp. 981-88 +Thousand Plateaus: Capitalism and Schizophrenia. Minneapolis: +Tradition, pp. 1156-60 +Tradition, pp. 1291-1306 +Tradition, pp. 1443-45 +Tradition, pp. 1550-62 +Tradition, pp. 1627-36 +Tradition, pp. 1801-13 +Tradition, pp. 588-93 +Tradition, pp. 721-37 +Tradition, pp. 799-806 +Tradition, pp. 799-806 +Tradition, pp. 871-74 +Tradition, pp. 874-77 +Understanding to the Status of Hermeneutic Principle." In The Critical +University of Chicago Press Journals, 1985 +University of Minnesota Press, 1987 +Vision." In The Critical Tradition, pp. 602-10 +Žižek, Slavoj. "Courtly Love." In The Critical Tradition, pp. 1181-97 +!2: Foucault, Michel. "What Is an Author?" In The Critical Tradition, pp. 904-14 +!4: Iser, Wolfgang. "The Reading Process: A Phenomenological +!Barthes, Roland. "The Death of the Author." In The Critical diff --git a/listform.cpp b/listform.cpp new file mode 100755 index 0000000..960b126 --- /dev/null +++ b/listform.cpp @@ -0,0 +1,73 @@ +#include "listform.h" +#include "ui_listform.h" + +ListForm::ListForm(QWidget *parent) : + SlideWidget(parent), + ui(new Ui::ListForm) +{ + ui->setupUi(this); + ui->checkBoxVerticalLayout->setAlignment(Qt::AlignTop); + + settings = new QSettings(WILLEM_LIU, EASY_LIST); + + // Add the list text to the MyCheckBoxContainer. It will create a list of MyCheckBox objects. + MyCheckBoxContainer::getInstance()->add(settings->value(LIST_TEXT, "").toString()); + connect(MyCheckBoxContainer::getInstance(), SIGNAL(signalSorted()), this, SLOT(addCheckBoxes())); + addCheckBoxes(); +} + +ListForm::~ListForm() +{ + delete ui; +} + +void ListForm::shown() +{ + MyCheckBoxContainer::getInstance()->set(settings->value(LIST_TEXT, "").toString()); + addCheckBoxes(); +} + +void ListForm::addCheckBoxes() +{ + // Add the MyCheckBox items to the view. + foreach(MyCheckBox * cb, MyCheckBoxContainer::getInstance()->getCheckBoxes()) + { + // Reset the parent. + ui->checkBoxVerticalLayout->addWidget(cb); + } +} + +void ListForm::on_editListPushButton_clicked() +{ + saveList(); + emit signalNavigate(1); +} + +void ListForm::saveList() +{ + settings->setValue(LIST_TEXT, MyCheckBoxContainer::getInstance()->getListText()); + SystemSettings::getInstance()->saveCurrentList(); +} + +void ListForm::on_uncheckAllPushButton_clicked() +{ + int res = QMessageBox::warning(this, "Uncheck All", "All items will be unchecked.", QMessageBox::Ok, QMessageBox::Cancel); + + if(res == QMessageBox::Ok) + { + MyCheckBoxContainer::getInstance()->uncheckAll(); + } +} + +void ListForm::on_clearCheckedPushButton_clicked() +{ + int res = QMessageBox::warning(this, "Clear selected", "All checked items will be cleared.", QMessageBox::Ok, QMessageBox::Cancel); + + if(res == QMessageBox::Ok) + { + MyCheckBoxContainer::getInstance()->removeChecked(); + settings->setValue(LIST_TEXT, MyCheckBoxContainer::getInstance()->getListText()); + SystemSettings::getInstance()->saveCurrentList(); + } +} + diff --git a/listform.h b/listform.h new file mode 100755 index 0000000..2fdde5c --- /dev/null +++ b/listform.h @@ -0,0 +1,41 @@ +#ifndef LISTFORM_H +#define LISTFORM_H + +#include +#include +#include +#include "mycheckboxcontainer.h" +#include "systemsettings.h" +#include "slidewidget.h" +#include "globals.h" + +namespace Ui { + class ListForm; +} + +class ListForm : public SlideWidget +{ + Q_OBJECT + +public: + explicit ListForm(QWidget *parent = 0); + ~ListForm(); + + virtual void shown(); + virtual void saveList(); + +private: + QSettings * settings; + + Ui::ListForm *ui; +signals: + void signalNavigate(int step); + +private slots: + void on_clearCheckedPushButton_clicked(); + void on_uncheckAllPushButton_clicked(); + void on_editListPushButton_clicked(); + void addCheckBoxes(); +}; + +#endif // LISTFORM_H diff --git a/listform.ui b/listform.ui new file mode 100755 index 0000000..b7c4d31 --- /dev/null +++ b/listform.ui @@ -0,0 +1,94 @@ + + + ListForm + + + + 0 + 0 + 400 + 300 + + + + Form + + + + 0 + + + 0 + + + + + 0 + + + + + Edit list + + + + + + + Uncheck all + + + + + + + Clear checked + + + + + + + + + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 396 + 271 + + + + + 0 + + + 0 + + + + + 0 + + + + + + + + + + + + + + diff --git a/main.cpp b/main.cpp new file mode 100755 index 0000000..0c1875d --- /dev/null +++ b/main.cpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010 Willem Liu + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include "mainform.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainForm w; + +#if defined(Q_WS_S60) + w.showMaximized(); +#else + w.show(); +#endif + + return a.exec(); +} diff --git a/mainform.cpp b/mainform.cpp new file mode 100755 index 0000000..9eac1d8 --- /dev/null +++ b/mainform.cpp @@ -0,0 +1,210 @@ +#include "mainform.h" +#include "ui_mainform.h" + +MainForm::MainForm(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainForm) +{ + ui->setupUi(this); + settings = new QSettings(WILLEM_LIU, EASY_LIST); + + newIndex = 0; + connect(SystemSettings::getInstance(), SIGNAL(signalKeyboardClosed(bool)), this, SLOT(keyboardClosed(bool))); + + ui->actionAuto_Orientation->setChecked(settings->value(AUTO_ORIENTATION).toBool()); + on_actionAuto_Orientation_triggered(); + + ui->actionSort_A_Z->setChecked(settings->value(SORT_A_Z).toBool()); + on_actionSort_A_Z_triggered(); + + // Set a default value for CHECKED_ITEMS_TO_BOTTOM + if(settings->contains(CHECKED_ITEMS_TO_BOTTOM) == false) + { + settings->setValue(CHECKED_ITEMS_TO_BOTTOM, false); + } + ui->actionChecked_bottom->setChecked(settings->value(CHECKED_ITEMS_TO_BOTTOM).toBool()); + on_actionChecked_bottom_triggered(); + + // Create a default for landscape mode. + landscape = settings->value(LANDSCAPE).toBool(); + // If LANDSCAPE exists in QSettings. + if(settings->contains(LANDSCAPE)) + { + // We use the LANDSCAPE value in the QSettings. + landscape = settings->value(LANDSCAPE).toBool(); + } + else + { + // Otherwise we set our default into the QSettings. + settings->setValue(LANDSCAPE, landscape); + } + // If keyboard is opened at start. We do landscape mode. + // Otherwise we do what's read from the QSettings. + if(ui->actionAuto_Orientation->isChecked() == false) + { + if(SystemSettings::getInstance()->getKeyboardClosed() == false) + { + setLandscapeMode(true); + } + else + { + setLandscapeMode(landscape); + } + } + + // Populate the QStackedWidget. ListForm is set as the current widget. + listForm = new ListForm(this); + editForm = new EditForm(this); + chooseListForm = new ChooseListForm(this); + + connect(listForm, SIGNAL(signalTransitionOutFinished()), this, SLOT(stateOutFinished())); + connect(listForm, SIGNAL(signalNavigate(int)), this, SLOT(changeWidget(int))); + + connect(editForm, SIGNAL(signalTransitionOutFinished()), this, SLOT(stateOutFinished())); + connect(editForm, SIGNAL(signalNavigate(int)), this, SLOT(changeWidget(int))); + + connect(chooseListForm, SIGNAL(signalTransitionOutFinished()), this, SLOT(stateOutFinished())); + connect(chooseListForm, SIGNAL(signalNavigate(int)), this, SLOT(changeWidget(int))); + + ui->stackedWidget->addWidget(listForm); + ui->stackedWidget->addWidget(editForm); + ui->stackedWidget->addWidget(chooseListForm); + ui->stackedWidget->setCurrentWidget(listForm); +} + +MainForm::~MainForm() +{ + delete ui; +} + +void MainForm::stateOutFinished() +{ + qDebug() << "Show new widget" << newIndex; + ui->stackedWidget->setCurrentIndex(newIndex); + SlideWidget * newWidget = dynamic_cast(ui->stackedWidget->currentWidget()); + newWidget->move(0, -newWidget->height()); + newWidget->setStateIn(); + newWidget->shown(); +} + +void MainForm::changeWidget(int step) +{ + SlideWidget * currentWidget = dynamic_cast(ui->stackedWidget->currentWidget()); + currentWidget->initStates(); + int currentIndex = ui->stackedWidget->indexOf(currentWidget); + // Because all widgets are started with StateOut as initial state, we + // need to reset the current widget to StateIn. The view is showing the + // current widget at the place of its StateIn position. But the state + // is never set to StateIn. + currentWidget->setStateIn(); + qDebug() << "Current widget index" << currentIndex; + newIndex = step; + currentWidget->setStateOut(); + qDebug() << "New widget index" << newIndex; +} + +void MainForm::keyboardClosed(bool closed) +{ + // When keyboard is opened. + if(ui->actionAuto_Orientation->isChecked() == false) + { + if(closed == false) + { + setLandscapeMode(true); + } + else + { + setLandscapeMode(landscape); + } + } +} + +void MainForm::setLandscapeMode(bool landscape) +{ + if(landscape) + { + tempLandscapeMode = true; + qDebug() << LANDSCAPE; +#ifdef Q_WS_MAEMO_5 + setAttribute(Qt::WA_Maemo5AutoOrientation, false); + setAttribute(Qt::WA_Maemo5LandscapeOrientation, true); + setAttribute(Qt::WA_Maemo5PortraitOrientation, false); +#endif + } + else + { + tempLandscapeMode = false; + qDebug() << PORTRAIT; +#ifdef Q_WS_MAEMO_5 + setAttribute(Qt::WA_Maemo5AutoOrientation, false); + setAttribute(Qt::WA_Maemo5PortraitOrientation, true); + setAttribute(Qt::WA_Maemo5LandscapeOrientation, false); +#endif + } +} + +void MainForm::on_actionRotate_triggered() +{ + qDebug() << "Rotate"; + + landscape = (width() < height()); + settings->setValue(LANDSCAPE, landscape); + ui->actionAuto_Orientation->setChecked(false); + settings->setValue(AUTO_ORIENTATION, ui->actionAuto_Orientation->isChecked()); + setLandscapeMode(landscape); +} + +void MainForm::on_actionAbout_triggered() +{ + qDebug() << "About"; + QString aboutText; + aboutText.append("EasyList (c) 2010\n\n"); + aboutText.append("Created by Willem Liu.\n"); + aboutText.append("Created with QtCreator.\n"); + QMessageBox::about(this, "EasyList", aboutText); +} + +void MainForm::on_actionChecked_bottom_triggered() +{ + bool sortToBottom = ui->actionChecked_bottom->isChecked(); + qDebug() << "Checked Bottom" << sortToBottom; + settings->setValue(CHECKED_ITEMS_TO_BOTTOM, sortToBottom); + MyCheckBoxContainer::getInstance()->setSortCheckedToBottom(sortToBottom); +} + +void MainForm::closeEvent(QCloseEvent *event) +{ + settings->setValue(LIST_TEXT, MyCheckBoxContainer::getInstance()->getListText()); + SystemSettings::getInstance()->saveCurrentList(); + event->accept(); +} + +void MainForm::on_actionAuto_Orientation_triggered() +{ + settings->setValue(AUTO_ORIENTATION, ui->actionAuto_Orientation->isChecked()); + qDebug() << "Auto orientation" << ui->actionAuto_Orientation->isChecked(); + if(ui->actionAuto_Orientation->isChecked()) + { +#ifdef Q_WS_MAEMO_5 + setAttribute(Qt::WA_Maemo5PortraitOrientation, false); + setAttribute(Qt::WA_Maemo5LandscapeOrientation, false); + setAttribute(Qt::WA_Maemo5AutoOrientation, true); +#endif + } + else + { + setLandscapeMode(landscape); + } +} + +void MainForm::on_actionSort_A_Z_triggered() +{ + settings->setValue(SORT_A_Z, ui->actionSort_A_Z->isChecked()); + MyCheckBoxContainer::getInstance()->setSortAlphabetically(ui->actionSort_A_Z->isChecked()); +} + +void MainForm::on_actionLists_triggered() +{ + listForm->saveList(); + changeWidget(2); +} diff --git a/mainform.h b/mainform.h new file mode 100755 index 0000000..d0ab819 --- /dev/null +++ b/mainform.h @@ -0,0 +1,62 @@ +#ifndef MAINFORM_H +#define MAINFORM_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "slidewidget.h" +#include "listform.h" +#include "editform.h" +#include "chooselistform.h" +#include "systemsettings.h" +#include "mycheckboxcontainer.h" +#include "globals.h" + +namespace Ui { + class MainForm; +} + +class MainForm : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainForm(QWidget *parent = 0); + ~MainForm(); + + void setLandscapeMode(bool landscape); + +public slots: + void keyboardClosed(bool closed); + void changeWidget(int step); + void stateOutFinished(); +private: + QSettings *settings; + bool landscape; + bool tempLandscapeMode; + int newIndex; + Ui::MainForm *ui; + + ListForm * listForm; + EditForm * editForm; + ChooseListForm * chooseListForm; +protected: + void closeEvent(QCloseEvent *event); + +private slots: + void on_actionLists_triggered(); + void on_actionSort_A_Z_triggered(); + void on_actionAuto_Orientation_triggered(); + void on_actionChecked_bottom_triggered(); + void on_actionAbout_triggered(); + void on_actionRotate_triggered(); +}; + +#endif // MAINFORM_H diff --git a/mainform.ui b/mainform.ui new file mode 100755 index 0000000..dce1e8c --- /dev/null +++ b/mainform.ui @@ -0,0 +1,127 @@ + + + MainForm + + + + 0 + 0 + 800 + 480 + + + + EasyList - by Willem Liu + + + + + 0 + + + 0 + + + + + -1 + + + + + + + + + 0 + 0 + 800 + 21 + + + + + Rotate + + + + + + About + + + + + + Checked to bottom + + + + + + Auto Orientation + + + + + + Sort A-Z + + + + + + Lists... + + + + + + + + + + + + + Rotate + + + + + About + + + + + true + + + Checked to bottom + + + + + true + + + Auto Orientation + + + + + true + + + Sort A-Z + + + + + Lists... + + + + + + diff --git a/mycheckbox.cpp b/mycheckbox.cpp new file mode 100755 index 0000000..303f73c --- /dev/null +++ b/mycheckbox.cpp @@ -0,0 +1,65 @@ +#include "mycheckbox.h" + +int MyCheckBox::instances = 0; + +MyCheckBox::MyCheckBox(QWidget *parent) : + QCheckBox(parent) +{ + ++instances; + qDebug() << "MyCheckBox instances:" << instances; + uncheckedColor = palette(); + checkedColor.setColor(QPalette::WindowText, Qt::gray); + + setContextMenuPolicy(Qt::CustomContextMenu); + connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenuActivated(QPoint))); + connect(this, SIGNAL(toggled(bool)), this, SLOT(slotTriggered(bool))); +} + +MyCheckBox::MyCheckBox(const QString & text, QWidget *parent) : + QCheckBox(text, parent) +{ + ++instances; + qDebug() << "MyCheckBox instances:" << instances; + + uncheckedColor = palette(); + checkedColor.setColor(QPalette::WindowText, Qt::gray); + + setContextMenuPolicy(Qt::CustomContextMenu); + connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenuActivated(QPoint))); + connect(this, SIGNAL(toggled(bool)), this, SLOT(slotTriggered(bool))); +} + +MyCheckBox::~MyCheckBox() +{ + --instances; + qDebug() << "MyCheckBox instances left:" << instances; +} + +void MyCheckBox::slotDeleteClicked() +{ + qDebug() << "Delete clicked"; + emit signalDeleteClicked(this); +} + +void MyCheckBox::slotContextMenuActivated(QPoint point) +{ + qDebug() << "Context menu activated"; + QMenu menu(this); + menu.addAction(tr("Delete"), this, SLOT(slotDeleteClicked())); + menu.exec(this->mapToGlobal(point)); +} + +void MyCheckBox::slotTriggered(bool checked) +{ + if(checked) + { + setPalette(checkedColor); + } + else + { + setPalette(uncheckedColor); + } + QFont f(font()); + f.setStrikeOut(checked); + setFont(f); +} diff --git a/mycheckbox.h b/mycheckbox.h new file mode 100755 index 0000000..6eac640 --- /dev/null +++ b/mycheckbox.h @@ -0,0 +1,29 @@ +#ifndef MYCHECKBOX_H +#define MYCHECKBOX_H + +#include +#include +#include +#include + +class MyCheckBox : public QCheckBox +{ + Q_OBJECT +public: + MyCheckBox(QWidget *parent = 0); + MyCheckBox(const QString & text, QWidget *parent = 0); + virtual ~MyCheckBox(); +private: + static int instances; + + QPalette checkedColor; + QPalette uncheckedColor; +signals: + void signalDeleteClicked(MyCheckBox * myCheckBox); +public slots: + void slotContextMenuActivated(QPoint point); + void slotDeleteClicked(); + void slotTriggered(bool checked); +}; + +#endif // MYCHECKBOX_H diff --git a/mycheckboxcontainer.cpp b/mycheckboxcontainer.cpp new file mode 100755 index 0000000..130cd0a --- /dev/null +++ b/mycheckboxcontainer.cpp @@ -0,0 +1,222 @@ +#include "mycheckboxcontainer.h" + +MyCheckBoxContainer * MyCheckBoxContainer::instance = 0; +int MyCheckBoxContainer::instances = 0; + +MyCheckBoxContainer::MyCheckBoxContainer() +{ + ++instances; + qDebug() << "MyCheckBoxContainer instances:" << instances; + sortToBottom = false; + sortAlphabetically = false; +} + +MyCheckBoxContainer::~MyCheckBoxContainer() +{ + --instances; + qDebug() << "MyCheckBoxContainer instances left:" << instances; + clear(); +} + +MyCheckBoxContainer * MyCheckBoxContainer::getInstance() +{ + if(instance == 0) + { + instance = new MyCheckBoxContainer(); + } + return instance; +} + +void MyCheckBoxContainer::add(QString item) +{ + QStringList list = item.split("\n"); + QStringList list2; + if(sortAlphabetically) + { + list2.append(list.takeFirst()); + int listSize = list.size(); + int pos = 0; + bool inserted = false; + for(int i = 0; i < listSize; ++i) + { + inserted = false; + int list2Size = list2.size(); + for(int j = 0; j < list2Size; ++j) + { + pos = j; + if(list[i].toUpper() < list2[j].toUpper()) + { + list2.insert(pos, list[i]); + inserted = true; + break; + } + } + if(inserted == false) + { + list2.append(list[i]); + } + } + list = list2; + } + qDebug() << "list" << list; + foreach(QString item, list) + { + if(item.length() > 0) + { + MyCheckBox * checkBox; + if(item.startsWith("!")) + { + checkBox = new MyCheckBox(item.right(item.length()-1)); + checkBox->setChecked(true); + } + else + { + checkBox = new MyCheckBox(item); + } + connect(checkBox, SIGNAL(clicked()), this, SLOT(clickedAction())); + checkBoxes.append(checkBox); + } + } + sortCheckedToBottom(); +} + +void MyCheckBoxContainer::set(QString item) +{ + clear(); + add(item); +} + +void MyCheckBoxContainer::clear() +{ + foreach(MyCheckBox * item, checkBoxes) + { + item->setParent(0); + item->deleteLater(); + } + checkBoxes.clear(); +} + +void MyCheckBoxContainer::sortCheckedToBottom() +{ + if(sortToBottom) + { + qDebug() << "Sort checked to bottom"; + QList tempList; + QList tempListChecked; + foreach(MyCheckBox * item, checkBoxes) + { + if(item->isChecked()) + { + if(sortAlphabetically) + { + int size = tempListChecked.size(); + int pos = 0; + for(pos = 0; pos < size; ++pos) + { + if(tempListChecked[pos]->text().toUpper() > item->text().toUpper()) + { + break; + } + } + tempListChecked.insert(pos, item); + } + else + { + tempListChecked.append(item); + } + } + else + { + if(sortAlphabetically) + { + int size = tempList.size(); + int pos = 0; + for(pos = 0; pos < size; ++pos) + { + if(tempList[pos]->text().toUpper() > item->text().toUpper()) + { + break; + } + } + tempList.insert(pos, item); + } + else + { + tempList.append(item); + } + } + } + checkBoxes.clear(); + checkBoxes.append(tempList); + checkBoxes.append(tempListChecked); + } + emit signalSorted(); +} + +QList const & MyCheckBoxContainer::getCheckBoxes() +{ + return checkBoxes; +} + +QString MyCheckBoxContainer::getListText() +{ + QString listText(""); + foreach(MyCheckBox * item, checkBoxes) + { + if(item->isChecked()) + { + listText.append("!"); + } + listText.append(item->text()); + listText.append("\n"); + } + return listText; +} + +void MyCheckBoxContainer::uncheckAll() +{ + foreach(MyCheckBox * item, checkBoxes) + { + item->setChecked(false); + } + if(sortAlphabetically) + { + set(getListText()); + } +} + +void MyCheckBoxContainer::removeChecked() +{ + QMutableListIterator i(checkBoxes); + while (i.hasNext()) + { + MyCheckBox * item = i.next(); + if (item->isChecked()) + { + item->setParent(0); + item->deleteLater(); + i.remove(); + } + } +} + +void MyCheckBoxContainer::setSortCheckedToBottom(bool sortToBottom) +{ + this->sortToBottom = sortToBottom; + sortCheckedToBottom(); +} + +void MyCheckBoxContainer::setSortAlphabetically(bool sortAlphabetically) +{ + this->sortAlphabetically = sortAlphabetically; + if(sortAlphabetically) + { + set(getListText()); + } +} + +void MyCheckBoxContainer::clickedAction() +{ + qDebug() << "Clicked a MyCheckBox"; + sortCheckedToBottom(); +} diff --git a/mycheckboxcontainer.h b/mycheckboxcontainer.h new file mode 100755 index 0000000..91f3de6 --- /dev/null +++ b/mycheckboxcontainer.h @@ -0,0 +1,46 @@ +#ifndef MYCHECKBOXCONTAINER_H +#define MYCHECKBOXCONTAINER_H + +#include +#include +#include +#include +#include +#include "mycheckbox.h" + +class MyCheckBoxContainer : public QObject +{ + Q_OBJECT +public: + QList const & getCheckBoxes(); + QString getListText(); + + virtual ~MyCheckBoxContainer(); + static MyCheckBoxContainer * getInstance(); + + void add(QString item); + void set(QString item); + void clear(); + void uncheckAll(); + void removeChecked(); + void setSortCheckedToBottom(bool sortToBottom); + void setSortAlphabetically(bool sortAlphabetically); + void sortCheckedToBottom(); + +private: + QList checkBoxes; + static MyCheckBoxContainer * instance; + static int instances; + + bool sortToBottom; + bool sortAlphabetically; + + MyCheckBoxContainer(); +signals: + void signalSorted(); +public slots: + void clickedAction(); + +}; + +#endif // MYCHECKBOXCONTAINER_H diff --git a/qtc_packaging/debian_fremantle/README b/qtc_packaging/debian_fremantle/README new file mode 100755 index 0000000..3cb52fa --- /dev/null +++ b/qtc_packaging/debian_fremantle/README @@ -0,0 +1,6 @@ +The Debian Package easylist +---------------------------- + +Comments regarding the Package + + -- Willem Liu Sat, 26 Mar 2011 11:17:23 +0100 diff --git a/qtc_packaging/debian_fremantle/changelog b/qtc_packaging/debian_fremantle/changelog new file mode 100755 index 0000000..ec40c3c --- /dev/null +++ b/qtc_packaging/debian_fremantle/changelog @@ -0,0 +1,133 @@ +easylist (0.3.23) unstable; urgency=low + + * Added prompt when clicked Uncheck All. + + -- Willem Liu Sat, 26 Mar 2011 11:17:23 +0100 + +easylist (0.3.23) unstable; urgency=low + + * Now the list is also saved under its list name. + + -- Willem Liu Sat, 26 Mar 2011 11:17:23 +0100 + +easylist (0.3.23) unstable; urgency=low + + * Repackaged to reduce package size. + + -- Willem Liu Thu, 26 Oct 2010 18:08:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Repackaged to reduce package size. + + -- Willem Liu Thu, 26 Oct 2010 18:06:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Added warning message box when clear checked message is pressed. + + -- Willem Liu Thu, 26 Oct 2010 17:47:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Fixed bug when saving to a list template with empty name causes all lists to disappear. + + -- Willem Liu Thu, 21 Oct 2010 19:19:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Fixed minor bug. Switching to Lists... view didn't save current list item states. + * Added notification when saving list as template. + + -- Willem Liu Thu, 21 Oct 2010 19:19:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Support for multiple lists. + * Changed order of menu items. + + -- Willem Liu Thu, 21 Oct 2010 00:05:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Changed control description. + + -- Willem Liu Tue, 07 Sep 2010 13:56:12 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Changed changelog to include all previous version changes. + + -- Willem Liu Tue, 07 Sep 2010 13:56:12 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Fixed sorting problem. + + -- Willem Liu Thu, 29 Sep 2010 03:12:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Fixed Sort A-Z bug. Caused list to disappear when turned on with option "Checked To Bottom" turned off. + + -- Willem Liu Thu, 29 Sep 2010 03:11:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Alphabetical sorting now ignores case. + * Checked items now have grey text instead of white and are striked through. + + -- Willem Liu Tue, 28 Sep 2010 17:12:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Alphabetical sorting now possible. + * Label "Checked bottom" changed to "Checked to bottom". + * Automatic display orientation detection now possible. + + -- Willem Liu Sun, 26 Sep 2010 17:43:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Significantly changed the source code. + * Divided in multiple classes. + * Using QStackedWidget now for the multiple views. + * Added uncheck all button. + + -- Willem Liu Wed, 22 Sep 2010 22:46:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Now supports sorting checked items to bottom of the list. + + -- Willem Liu Thu, 16 Sep 2010 13:43:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Initial Release. + + -- Willem Liu Tue, 07 Sep 2010 11:56:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Changed binary version number. + + -- Willem Liu Tue, 07 Sep 2010 11:56:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Added optify file. + + -- Willem Liu Tue, 07 Sep 2010 11:56:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Initial Release. + + -- Willem Liu Tue, 07 Sep 2010 11:56:00 +0200 + +easylist (0.3.23) unstable; urgency=low + + * Initial Release. + + -- Willem Liu Tue, 07 Sep 2010 11:56:00 +0200 diff --git a/qtc_packaging/debian_fremantle/compat b/qtc_packaging/debian_fremantle/compat new file mode 100755 index 0000000..7f8f011 --- /dev/null +++ b/qtc_packaging/debian_fremantle/compat @@ -0,0 +1 @@ +7 diff --git a/qtc_packaging/debian_fremantle/control b/qtc_packaging/debian_fremantle/control new file mode 100755 index 0000000..0253815 --- /dev/null +++ b/qtc_packaging/debian_fremantle/control @@ -0,0 +1,20 @@ +Source: easylist +Section: user/utilities +Priority: optional +Maintainer: Willem Liu +Build-Depends: debhelper (>= 5), libqt4-dev, autotools-dev, libhildon1 (>= 2.2) +Standards-Version: 3.7.3 +Homepage: http://gitorious.com/easylist + +Package: easylist +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Simple Check list app. + With this app you can enter text in a text area. Each new line is interpreted + as a new checkbox item. The app supports portrait as well as landscape + orientation. The app can sort checked items to the bottom and/or from A-Z. + As a bonus it has a nice slide up/down transition effect when switching + between List view and Edit list view modes. Multiple lists is supported. +XSBC-Maemo-Display-Name: EasyList +XSBC-Bugtracker: mailto:willem.liu@gmail.com +XB-Maemo-Icon-26: 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 diff --git a/qtc_packaging/debian_fremantle/copyright b/qtc_packaging/debian_fremantle/copyright new file mode 100755 index 0000000..2beb900 --- /dev/null +++ b/qtc_packaging/debian_fremantle/copyright @@ -0,0 +1,38 @@ +This package was debianized by Willem Liu on +Sat, 26 Mar 2011 11:17:23 +0100. + +It was downloaded from + +Upstream Author(s): + + Willem Liu + +License: + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is (C) 2011, Willem Liu and +is licensed under the GPL, see above. + + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff --git a/qtc_packaging/debian_fremantle/rules b/qtc_packaging/debian_fremantle/rules new file mode 100755 index 0000000..f837571 --- /dev/null +++ b/qtc_packaging/debian_fremantle/rules @@ -0,0 +1,91 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + qmake + $(MAKE) + #docbook-to-man debian/easylist.sgml > easylist.1 + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/easylist. + $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/easylist install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + # dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb + # dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/slidewidget.cpp b/slidewidget.cpp new file mode 100755 index 0000000..9cb5661 --- /dev/null +++ b/slidewidget.cpp @@ -0,0 +1,66 @@ +#include "slidewidget.h" + +SlideWidget::SlideWidget(QWidget *parent) : + QWidget(parent) +{ + initStates(); + + QAbstractTransition * t1 = stateIn.addTransition(this, SIGNAL(signalDoStateOut()), &stateOut); + QAbstractTransition * t2 = stateOut.addTransition(this, SIGNAL(signalDoStateIn()), &stateIn); + + t1->addAnimation(&animPosOut); + t2->addAnimation(&animPosIn); + + connect(&animPosIn, SIGNAL(finished()), this, SIGNAL(signalTransitionInFinished())); + connect(&animPosIn, SIGNAL(finished()), this, SLOT(slotStateInFinished())); + connect(&animPosOut, SIGNAL(finished()), this, SIGNAL(signalTransitionOutFinished())); + connect(&animPosOut, SIGNAL(finished()), this, SLOT(slotStateOutFinished())); + + machine.addState(&stateIn); + machine.addState(&stateOut); + machine.setInitialState(&stateOut); + machine.start(); +} + +SlideWidget::~SlideWidget() +{ +} + +void SlideWidget::initStates() +{ + animPosIn.setTargetObject(this); + animPosIn.setPropertyName("pos"); + animPosIn.setDuration(500); + animPosIn.setEasingCurve(QEasingCurve::OutExpo); + + animPosOut.setTargetObject(this); + animPosOut.setPropertyName("pos"); + animPosOut.setDuration(500); + animPosOut.setEasingCurve(QEasingCurve::OutExpo); + + stateIn.assignProperty(this, "pos", QPoint(0, 0)); + + stateOut.assignProperty(this, "pos", QPoint(0, -this->height())); +} + +void SlideWidget::setStateIn() +{ + qDebug() << "State In"; + emit signalDoStateIn(); +} + +void SlideWidget::setStateOut() +{ + qDebug() << "State Out"; + emit signalDoStateOut(); +} + +void SlideWidget::slotStateInFinished() +{ + qDebug() << "State in finished" << pos(); +} + +void SlideWidget::slotStateOutFinished() +{ + qDebug() << "State out finished" << pos(); +} diff --git a/slidewidget.h b/slidewidget.h new file mode 100755 index 0000000..e219ceb --- /dev/null +++ b/slidewidget.h @@ -0,0 +1,47 @@ +#ifndef SLIDEWIDGET_H +#define SLIDEWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include + +class SlideWidget : public QWidget +{ + Q_OBJECT +public: + explicit SlideWidget(QWidget *parent = 0); + virtual ~SlideWidget(); + + virtual void shown() = 0; + + void initStates(); + + void setStateIn(); + void setStateOut(); + +private: + QStateMachine machine; + QState stateIn; + QState stateOut; + + QPropertyAnimation animPosIn; + QPropertyAnimation animPosOut; + +protected: + +signals: + void signalDoStateIn(); + void signalDoStateOut(); + void signalTransitionOutFinished(); + void signalTransitionInFinished(); +public slots: + void slotStateInFinished(); + void slotStateOutFinished(); +}; + +#endif // SLIDEWIDGET_H diff --git a/src/data/26x26/easylist.png b/src/data/26x26/easylist.png deleted file mode 100755 index 1f9c0a97dbdc5376d6b5377239f0ed30faebdcd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4317 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 diff --git a/src/data/64x64/easylist.png b/src/data/64x64/easylist.png deleted file mode 100755 index 8ff8deacde1b3cf3571aee1ce988f3ef46cf954d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10763 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%0A;D{&eGMoWLa$Z5J7q}_7hEb?5?I4jxcK5rc=3zB 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 JPDHLkV1h~))*b)= diff --git a/src/easylist.desktop b/src/easylist.desktop deleted file mode 100755 index d0c8e55..0000000 --- a/src/easylist.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Name=EasyList -Exec=/opt/easylist/bin/easylist -Icon=easylist -StartupWMClass=easylist -X-Window-Icon=easylist -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable -Terminal=false - diff --git a/src/editform.cpp b/src/editform.cpp deleted file mode 100755 index a5dc6e5..0000000 --- a/src/editform.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "editform.h" -#include "ui_editform.h" - -EditForm::EditForm(QWidget *parent) : - SlideWidget(parent), - ui(new Ui::EditForm) -{ - ui->setupUi(this); - settings = new QSettings(WILLEM_LIU, EASY_LIST); - shown(); -} - -EditForm::~EditForm() -{ - delete ui; -} - -void EditForm::shown() -{ - ui->textEdit->setText(MyCheckBoxContainer::getInstance()->getListText()); - ui->textEdit->setFocus(Qt::ActiveWindowFocusReason); -} - -void EditForm::on_savePushButton_clicked() -{ - qDebug() << "Save"; - settings->setValue(LIST_TEXT, ui->textEdit->toPlainText()); - emit signalNavigate(0); -} - -void EditForm::on_cancelPushButton_clicked() -{ - qDebug() << "Cancel"; - emit signalNavigate(0); -} diff --git a/src/editform.h b/src/editform.h deleted file mode 100755 index 80225c9..0000000 --- a/src/editform.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef EDITFORM_H -#define EDITFORM_H - -#include -#include -#include -#include "mycheckboxcontainer.h" -#include "slidewidget.h" -#include "globals.h" - -namespace Ui { - class EditForm; -} - -class EditForm : public SlideWidget -{ - Q_OBJECT - -public: - explicit EditForm(QWidget *parent = 0); - ~EditForm(); - - virtual void shown(); - -private: - Ui::EditForm *ui; - - QSettings * settings; - -signals: - void signalNavigate(int step); - -private slots: - void on_cancelPushButton_clicked(); - void on_savePushButton_clicked(); -}; - -#endif // EDITFORM_H diff --git a/src/editform.ui b/src/editform.ui deleted file mode 100755 index 12869bb..0000000 --- a/src/editform.ui +++ /dev/null @@ -1,55 +0,0 @@ - - - EditForm - - - - 0 - 0 - 400 - 300 - - - - Form - - - - 0 - - - 0 - - - - - 0 - - - - - Save - - - - - - - Cancel - - - - - - - - - - - - - - - - - diff --git a/src/globals.h b/src/globals.h deleted file mode 100755 index 5b5dd9c..0000000 --- a/src/globals.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef GLOBALS_H -#define GLOBALS_H - -#define WILLEM_LIU "WillemLiu" -#define EASY_LIST "easylist" -#define LIST_TEXT "ListText" -#define LIST_NAMES "ListName" -#define DBUS_KEYBOARD_SLIDE "/org/freedesktop/Hal/devices/platform_slide" -#define CHECKED_ITEMS_TO_BOTTOM "CheckedItemsToBottom" -#define LANDSCAPE "Landscape" -#define PORTRAIT "Portrait" -#define AUTO_ORIENTATION "AutoOrientation" -#define LIST_TEXT "ListText" -#define SORT_A_Z "SortAlphabetically" - -static const int BACK = 0; -static const int FORWARD = 1; - -#endif // GLOBALS_H diff --git a/src/listform.cpp b/src/listform.cpp deleted file mode 100755 index d73e362..0000000 --- a/src/listform.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "listform.h" -#include "ui_listform.h" - -ListForm::ListForm(QWidget *parent) : - SlideWidget(parent), - ui(new Ui::ListForm) -{ - ui->setupUi(this); - ui->checkBoxVerticalLayout->setAlignment(Qt::AlignTop); - - settings = new QSettings(WILLEM_LIU, EASY_LIST); - - // Add the list text to the MyCheckBoxContainer. It will create a list of MyCheckBox objects. - MyCheckBoxContainer::getInstance()->add(settings->value(LIST_TEXT, "").toString()); - connect(MyCheckBoxContainer::getInstance(), SIGNAL(signalSorted()), this, SLOT(addCheckBoxes())); - addCheckBoxes(); -} - -ListForm::~ListForm() -{ - delete ui; -} - -void ListForm::shown() -{ - MyCheckBoxContainer::getInstance()->set(settings->value(LIST_TEXT, "").toString()); - addCheckBoxes(); -} - -void ListForm::addCheckBoxes() -{ - // Add the MyCheckBox items to the view. - foreach(MyCheckBox * cb, MyCheckBoxContainer::getInstance()->getCheckBoxes()) - { - // Reset the parent. - ui->checkBoxVerticalLayout->addWidget(cb); - } -} - -void ListForm::on_editListPushButton_clicked() -{ - saveList(); - emit signalNavigate(1); -} - -void ListForm::saveList() -{ - settings->setValue(LIST_TEXT, MyCheckBoxContainer::getInstance()->getListText()); -} - -void ListForm::on_uncheckAllPushButton_clicked() -{ - MyCheckBoxContainer::getInstance()->uncheckAll(); -} - -void ListForm::on_clearCheckedPushButton_clicked() -{ - int res = QMessageBox::warning(this, "Clear selected", "All checked items will be cleared.", QMessageBox::Ok, QMessageBox::Cancel); - - if(res == QMessageBox::Ok) - { - MyCheckBoxContainer::getInstance()->removeChecked(); - settings->setValue(LIST_TEXT, MyCheckBoxContainer::getInstance()->getListText()); - } -} - diff --git a/src/listform.h b/src/listform.h deleted file mode 100755 index 2fdde5c..0000000 --- a/src/listform.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef LISTFORM_H -#define LISTFORM_H - -#include -#include -#include -#include "mycheckboxcontainer.h" -#include "systemsettings.h" -#include "slidewidget.h" -#include "globals.h" - -namespace Ui { - class ListForm; -} - -class ListForm : public SlideWidget -{ - Q_OBJECT - -public: - explicit ListForm(QWidget *parent = 0); - ~ListForm(); - - virtual void shown(); - virtual void saveList(); - -private: - QSettings * settings; - - Ui::ListForm *ui; -signals: - void signalNavigate(int step); - -private slots: - void on_clearCheckedPushButton_clicked(); - void on_uncheckAllPushButton_clicked(); - void on_editListPushButton_clicked(); - void addCheckBoxes(); -}; - -#endif // LISTFORM_H diff --git a/src/listform.ui b/src/listform.ui deleted file mode 100755 index b7c4d31..0000000 --- a/src/listform.ui +++ /dev/null @@ -1,94 +0,0 @@ - - - ListForm - - - - 0 - 0 - 400 - 300 - - - - Form - - - - 0 - - - 0 - - - - - 0 - - - - - Edit list - - - - - - - Uncheck all - - - - - - - Clear checked - - - - - - - - - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - 0 - 0 - 396 - 271 - - - - - 0 - - - 0 - - - - - 0 - - - - - - - - - - - - - - diff --git a/src/main.cpp b/src/main.cpp deleted file mode 100755 index 0c1875d..0000000 --- a/src/main.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2010 Willem Liu - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include "mainform.h" - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - MainForm w; - -#if defined(Q_WS_S60) - w.showMaximized(); -#else - w.show(); -#endif - - return a.exec(); -} diff --git a/src/mainform.cpp b/src/mainform.cpp deleted file mode 100755 index d46c425..0000000 --- a/src/mainform.cpp +++ /dev/null @@ -1,209 +0,0 @@ -#include "mainform.h" -#include "ui_mainform.h" - -MainForm::MainForm(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainForm) -{ - ui->setupUi(this); - settings = new QSettings(WILLEM_LIU, EASY_LIST); - - newIndex = 0; - connect(SystemSettings::getInstance(), SIGNAL(signalKeyboardClosed(bool)), this, SLOT(keyboardClosed(bool))); - - ui->actionAuto_Orientation->setChecked(settings->value(AUTO_ORIENTATION).toBool()); - on_actionAuto_Orientation_triggered(); - - ui->actionSort_A_Z->setChecked(settings->value(SORT_A_Z).toBool()); - on_actionSort_A_Z_triggered(); - - // Set a default value for CHECKED_ITEMS_TO_BOTTOM - if(settings->contains(CHECKED_ITEMS_TO_BOTTOM) == false) - { - settings->setValue(CHECKED_ITEMS_TO_BOTTOM, false); - } - ui->actionChecked_bottom->setChecked(settings->value(CHECKED_ITEMS_TO_BOTTOM).toBool()); - on_actionChecked_bottom_triggered(); - - // Create a default for landscape mode. - landscape = settings->value(LANDSCAPE).toBool(); - // If LANDSCAPE exists in QSettings. - if(settings->contains(LANDSCAPE)) - { - // We use the LANDSCAPE value in the QSettings. - landscape = settings->value(LANDSCAPE).toBool(); - } - else - { - // Otherwise we set our default into the QSettings. - settings->setValue(LANDSCAPE, landscape); - } - // If keyboard is opened at start. We do landscape mode. - // Otherwise we do what's read from the QSettings. - if(ui->actionAuto_Orientation->isChecked() == false) - { - if(SystemSettings::getInstance()->getKeyboardClosed() == false) - { - setLandscapeMode(true); - } - else - { - setLandscapeMode(landscape); - } - } - - // Populate the QStackedWidget. ListForm is set as the current widget. - listForm = new ListForm(this); - editForm = new EditForm(this); - chooseListForm = new ChooseListForm(this); - - connect(listForm, SIGNAL(signalTransitionOutFinished()), this, SLOT(stateOutFinished())); - connect(listForm, SIGNAL(signalNavigate(int)), this, SLOT(changeWidget(int))); - - connect(editForm, SIGNAL(signalTransitionOutFinished()), this, SLOT(stateOutFinished())); - connect(editForm, SIGNAL(signalNavigate(int)), this, SLOT(changeWidget(int))); - - connect(chooseListForm, SIGNAL(signalTransitionOutFinished()), this, SLOT(stateOutFinished())); - connect(chooseListForm, SIGNAL(signalNavigate(int)), this, SLOT(changeWidget(int))); - - ui->stackedWidget->addWidget(listForm); - ui->stackedWidget->addWidget(editForm); - ui->stackedWidget->addWidget(chooseListForm); - ui->stackedWidget->setCurrentWidget(listForm); -} - -MainForm::~MainForm() -{ - delete ui; -} - -void MainForm::stateOutFinished() -{ - qDebug() << "Show new widget" << newIndex; - ui->stackedWidget->setCurrentIndex(newIndex); - SlideWidget * newWidget = dynamic_cast(ui->stackedWidget->currentWidget()); - newWidget->move(0, -newWidget->height()); - newWidget->setStateIn(); - newWidget->shown(); -} - -void MainForm::changeWidget(int step) -{ - SlideWidget * currentWidget = dynamic_cast(ui->stackedWidget->currentWidget()); - currentWidget->initStates(); - int currentIndex = ui->stackedWidget->indexOf(currentWidget); - // Because all widgets are started with StateOut as initial state, we - // need to reset the current widget to StateIn. The view is showing the - // current widget at the place of its StateIn position. But the state - // is never set to StateIn. - currentWidget->setStateIn(); - qDebug() << "Current widget index" << currentIndex; - newIndex = step; - currentWidget->setStateOut(); - qDebug() << "New widget index" << newIndex; -} - -void MainForm::keyboardClosed(bool closed) -{ - // When keyboard is opened. - if(ui->actionAuto_Orientation->isChecked() == false) - { - if(closed == false) - { - setLandscapeMode(true); - } - else - { - setLandscapeMode(landscape); - } - } -} - -void MainForm::setLandscapeMode(bool landscape) -{ - if(landscape) - { - tempLandscapeMode = true; - qDebug() << LANDSCAPE; -#ifdef Q_WS_MAEMO_5 - setAttribute(Qt::WA_Maemo5AutoOrientation, false); - setAttribute(Qt::WA_Maemo5LandscapeOrientation, true); - setAttribute(Qt::WA_Maemo5PortraitOrientation, false); -#endif - } - else - { - tempLandscapeMode = false; - qDebug() << PORTRAIT; -#ifdef Q_WS_MAEMO_5 - setAttribute(Qt::WA_Maemo5AutoOrientation, false); - setAttribute(Qt::WA_Maemo5PortraitOrientation, true); - setAttribute(Qt::WA_Maemo5LandscapeOrientation, false); -#endif - } -} - -void MainForm::on_actionRotate_triggered() -{ - qDebug() << "Rotate"; - - landscape = (width() < height()); - settings->setValue(LANDSCAPE, landscape); - ui->actionAuto_Orientation->setChecked(false); - settings->setValue(AUTO_ORIENTATION, ui->actionAuto_Orientation->isChecked()); - setLandscapeMode(landscape); -} - -void MainForm::on_actionAbout_triggered() -{ - qDebug() << "About"; - QString aboutText; - aboutText.append("EasyList (c) 2010\n\n"); - aboutText.append("Created by Willem Liu.\n"); - aboutText.append("Created with QtCreator.\n"); - QMessageBox::about(this, "EasyList", aboutText); -} - -void MainForm::on_actionChecked_bottom_triggered() -{ - bool sortToBottom = ui->actionChecked_bottom->isChecked(); - qDebug() << "Checked Bottom" << sortToBottom; - settings->setValue(CHECKED_ITEMS_TO_BOTTOM, sortToBottom); - MyCheckBoxContainer::getInstance()->setSortCheckedToBottom(sortToBottom); -} - -void MainForm::closeEvent(QCloseEvent *event) -{ - settings->setValue(LIST_TEXT, MyCheckBoxContainer::getInstance()->getListText()); - event->accept(); -} - -void MainForm::on_actionAuto_Orientation_triggered() -{ - settings->setValue(AUTO_ORIENTATION, ui->actionAuto_Orientation->isChecked()); - qDebug() << "Auto orientation" << ui->actionAuto_Orientation->isChecked(); - if(ui->actionAuto_Orientation->isChecked()) - { -#ifdef Q_WS_MAEMO_5 - setAttribute(Qt::WA_Maemo5PortraitOrientation, false); - setAttribute(Qt::WA_Maemo5LandscapeOrientation, false); - setAttribute(Qt::WA_Maemo5AutoOrientation, true); -#endif - } - else - { - setLandscapeMode(landscape); - } -} - -void MainForm::on_actionSort_A_Z_triggered() -{ - settings->setValue(SORT_A_Z, ui->actionSort_A_Z->isChecked()); - MyCheckBoxContainer::getInstance()->setSortAlphabetically(ui->actionSort_A_Z->isChecked()); -} - -void MainForm::on_actionLists_triggered() -{ - listForm->saveList(); - changeWidget(2); -} diff --git a/src/mainform.h b/src/mainform.h deleted file mode 100755 index d0ab819..0000000 --- a/src/mainform.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef MAINFORM_H -#define MAINFORM_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "slidewidget.h" -#include "listform.h" -#include "editform.h" -#include "chooselistform.h" -#include "systemsettings.h" -#include "mycheckboxcontainer.h" -#include "globals.h" - -namespace Ui { - class MainForm; -} - -class MainForm : public QMainWindow -{ - Q_OBJECT - -public: - explicit MainForm(QWidget *parent = 0); - ~MainForm(); - - void setLandscapeMode(bool landscape); - -public slots: - void keyboardClosed(bool closed); - void changeWidget(int step); - void stateOutFinished(); -private: - QSettings *settings; - bool landscape; - bool tempLandscapeMode; - int newIndex; - Ui::MainForm *ui; - - ListForm * listForm; - EditForm * editForm; - ChooseListForm * chooseListForm; -protected: - void closeEvent(QCloseEvent *event); - -private slots: - void on_actionLists_triggered(); - void on_actionSort_A_Z_triggered(); - void on_actionAuto_Orientation_triggered(); - void on_actionChecked_bottom_triggered(); - void on_actionAbout_triggered(); - void on_actionRotate_triggered(); -}; - -#endif // MAINFORM_H diff --git a/src/mainform.ui b/src/mainform.ui deleted file mode 100755 index dce1e8c..0000000 --- a/src/mainform.ui +++ /dev/null @@ -1,127 +0,0 @@ - - - MainForm - - - - 0 - 0 - 800 - 480 - - - - EasyList - by Willem Liu - - - - - 0 - - - 0 - - - - - -1 - - - - - - - - - 0 - 0 - 800 - 21 - - - - - Rotate - - - - - - About - - - - - - Checked to bottom - - - - - - Auto Orientation - - - - - - Sort A-Z - - - - - - Lists... - - - - - - - - - - - - - Rotate - - - - - About - - - - - true - - - Checked to bottom - - - - - true - - - Auto Orientation - - - - - true - - - Sort A-Z - - - - - Lists... - - - - - - diff --git a/src/mycheckbox.cpp b/src/mycheckbox.cpp deleted file mode 100755 index 303f73c..0000000 --- a/src/mycheckbox.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "mycheckbox.h" - -int MyCheckBox::instances = 0; - -MyCheckBox::MyCheckBox(QWidget *parent) : - QCheckBox(parent) -{ - ++instances; - qDebug() << "MyCheckBox instances:" << instances; - uncheckedColor = palette(); - checkedColor.setColor(QPalette::WindowText, Qt::gray); - - setContextMenuPolicy(Qt::CustomContextMenu); - connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenuActivated(QPoint))); - connect(this, SIGNAL(toggled(bool)), this, SLOT(slotTriggered(bool))); -} - -MyCheckBox::MyCheckBox(const QString & text, QWidget *parent) : - QCheckBox(text, parent) -{ - ++instances; - qDebug() << "MyCheckBox instances:" << instances; - - uncheckedColor = palette(); - checkedColor.setColor(QPalette::WindowText, Qt::gray); - - setContextMenuPolicy(Qt::CustomContextMenu); - connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenuActivated(QPoint))); - connect(this, SIGNAL(toggled(bool)), this, SLOT(slotTriggered(bool))); -} - -MyCheckBox::~MyCheckBox() -{ - --instances; - qDebug() << "MyCheckBox instances left:" << instances; -} - -void MyCheckBox::slotDeleteClicked() -{ - qDebug() << "Delete clicked"; - emit signalDeleteClicked(this); -} - -void MyCheckBox::slotContextMenuActivated(QPoint point) -{ - qDebug() << "Context menu activated"; - QMenu menu(this); - menu.addAction(tr("Delete"), this, SLOT(slotDeleteClicked())); - menu.exec(this->mapToGlobal(point)); -} - -void MyCheckBox::slotTriggered(bool checked) -{ - if(checked) - { - setPalette(checkedColor); - } - else - { - setPalette(uncheckedColor); - } - QFont f(font()); - f.setStrikeOut(checked); - setFont(f); -} diff --git a/src/mycheckbox.h b/src/mycheckbox.h deleted file mode 100755 index 6eac640..0000000 --- a/src/mycheckbox.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef MYCHECKBOX_H -#define MYCHECKBOX_H - -#include -#include -#include -#include - -class MyCheckBox : public QCheckBox -{ - Q_OBJECT -public: - MyCheckBox(QWidget *parent = 0); - MyCheckBox(const QString & text, QWidget *parent = 0); - virtual ~MyCheckBox(); -private: - static int instances; - - QPalette checkedColor; - QPalette uncheckedColor; -signals: - void signalDeleteClicked(MyCheckBox * myCheckBox); -public slots: - void slotContextMenuActivated(QPoint point); - void slotDeleteClicked(); - void slotTriggered(bool checked); -}; - -#endif // MYCHECKBOX_H diff --git a/src/mycheckboxcontainer.cpp b/src/mycheckboxcontainer.cpp deleted file mode 100755 index 130cd0a..0000000 --- a/src/mycheckboxcontainer.cpp +++ /dev/null @@ -1,222 +0,0 @@ -#include "mycheckboxcontainer.h" - -MyCheckBoxContainer * MyCheckBoxContainer::instance = 0; -int MyCheckBoxContainer::instances = 0; - -MyCheckBoxContainer::MyCheckBoxContainer() -{ - ++instances; - qDebug() << "MyCheckBoxContainer instances:" << instances; - sortToBottom = false; - sortAlphabetically = false; -} - -MyCheckBoxContainer::~MyCheckBoxContainer() -{ - --instances; - qDebug() << "MyCheckBoxContainer instances left:" << instances; - clear(); -} - -MyCheckBoxContainer * MyCheckBoxContainer::getInstance() -{ - if(instance == 0) - { - instance = new MyCheckBoxContainer(); - } - return instance; -} - -void MyCheckBoxContainer::add(QString item) -{ - QStringList list = item.split("\n"); - QStringList list2; - if(sortAlphabetically) - { - list2.append(list.takeFirst()); - int listSize = list.size(); - int pos = 0; - bool inserted = false; - for(int i = 0; i < listSize; ++i) - { - inserted = false; - int list2Size = list2.size(); - for(int j = 0; j < list2Size; ++j) - { - pos = j; - if(list[i].toUpper() < list2[j].toUpper()) - { - list2.insert(pos, list[i]); - inserted = true; - break; - } - } - if(inserted == false) - { - list2.append(list[i]); - } - } - list = list2; - } - qDebug() << "list" << list; - foreach(QString item, list) - { - if(item.length() > 0) - { - MyCheckBox * checkBox; - if(item.startsWith("!")) - { - checkBox = new MyCheckBox(item.right(item.length()-1)); - checkBox->setChecked(true); - } - else - { - checkBox = new MyCheckBox(item); - } - connect(checkBox, SIGNAL(clicked()), this, SLOT(clickedAction())); - checkBoxes.append(checkBox); - } - } - sortCheckedToBottom(); -} - -void MyCheckBoxContainer::set(QString item) -{ - clear(); - add(item); -} - -void MyCheckBoxContainer::clear() -{ - foreach(MyCheckBox * item, checkBoxes) - { - item->setParent(0); - item->deleteLater(); - } - checkBoxes.clear(); -} - -void MyCheckBoxContainer::sortCheckedToBottom() -{ - if(sortToBottom) - { - qDebug() << "Sort checked to bottom"; - QList tempList; - QList tempListChecked; - foreach(MyCheckBox * item, checkBoxes) - { - if(item->isChecked()) - { - if(sortAlphabetically) - { - int size = tempListChecked.size(); - int pos = 0; - for(pos = 0; pos < size; ++pos) - { - if(tempListChecked[pos]->text().toUpper() > item->text().toUpper()) - { - break; - } - } - tempListChecked.insert(pos, item); - } - else - { - tempListChecked.append(item); - } - } - else - { - if(sortAlphabetically) - { - int size = tempList.size(); - int pos = 0; - for(pos = 0; pos < size; ++pos) - { - if(tempList[pos]->text().toUpper() > item->text().toUpper()) - { - break; - } - } - tempList.insert(pos, item); - } - else - { - tempList.append(item); - } - } - } - checkBoxes.clear(); - checkBoxes.append(tempList); - checkBoxes.append(tempListChecked); - } - emit signalSorted(); -} - -QList const & MyCheckBoxContainer::getCheckBoxes() -{ - return checkBoxes; -} - -QString MyCheckBoxContainer::getListText() -{ - QString listText(""); - foreach(MyCheckBox * item, checkBoxes) - { - if(item->isChecked()) - { - listText.append("!"); - } - listText.append(item->text()); - listText.append("\n"); - } - return listText; -} - -void MyCheckBoxContainer::uncheckAll() -{ - foreach(MyCheckBox * item, checkBoxes) - { - item->setChecked(false); - } - if(sortAlphabetically) - { - set(getListText()); - } -} - -void MyCheckBoxContainer::removeChecked() -{ - QMutableListIterator i(checkBoxes); - while (i.hasNext()) - { - MyCheckBox * item = i.next(); - if (item->isChecked()) - { - item->setParent(0); - item->deleteLater(); - i.remove(); - } - } -} - -void MyCheckBoxContainer::setSortCheckedToBottom(bool sortToBottom) -{ - this->sortToBottom = sortToBottom; - sortCheckedToBottom(); -} - -void MyCheckBoxContainer::setSortAlphabetically(bool sortAlphabetically) -{ - this->sortAlphabetically = sortAlphabetically; - if(sortAlphabetically) - { - set(getListText()); - } -} - -void MyCheckBoxContainer::clickedAction() -{ - qDebug() << "Clicked a MyCheckBox"; - sortCheckedToBottom(); -} diff --git a/src/mycheckboxcontainer.h b/src/mycheckboxcontainer.h deleted file mode 100755 index 91f3de6..0000000 --- a/src/mycheckboxcontainer.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef MYCHECKBOXCONTAINER_H -#define MYCHECKBOXCONTAINER_H - -#include -#include -#include -#include -#include -#include "mycheckbox.h" - -class MyCheckBoxContainer : public QObject -{ - Q_OBJECT -public: - QList const & getCheckBoxes(); - QString getListText(); - - virtual ~MyCheckBoxContainer(); - static MyCheckBoxContainer * getInstance(); - - void add(QString item); - void set(QString item); - void clear(); - void uncheckAll(); - void removeChecked(); - void setSortCheckedToBottom(bool sortToBottom); - void setSortAlphabetically(bool sortAlphabetically); - void sortCheckedToBottom(); - -private: - QList checkBoxes; - static MyCheckBoxContainer * instance; - static int instances; - - bool sortToBottom; - bool sortAlphabetically; - - MyCheckBoxContainer(); -signals: - void signalSorted(); -public slots: - void clickedAction(); - -}; - -#endif // MYCHECKBOXCONTAINER_H diff --git a/src/slidewidget.cpp b/src/slidewidget.cpp deleted file mode 100755 index 9cb5661..0000000 --- a/src/slidewidget.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "slidewidget.h" - -SlideWidget::SlideWidget(QWidget *parent) : - QWidget(parent) -{ - initStates(); - - QAbstractTransition * t1 = stateIn.addTransition(this, SIGNAL(signalDoStateOut()), &stateOut); - QAbstractTransition * t2 = stateOut.addTransition(this, SIGNAL(signalDoStateIn()), &stateIn); - - t1->addAnimation(&animPosOut); - t2->addAnimation(&animPosIn); - - connect(&animPosIn, SIGNAL(finished()), this, SIGNAL(signalTransitionInFinished())); - connect(&animPosIn, SIGNAL(finished()), this, SLOT(slotStateInFinished())); - connect(&animPosOut, SIGNAL(finished()), this, SIGNAL(signalTransitionOutFinished())); - connect(&animPosOut, SIGNAL(finished()), this, SLOT(slotStateOutFinished())); - - machine.addState(&stateIn); - machine.addState(&stateOut); - machine.setInitialState(&stateOut); - machine.start(); -} - -SlideWidget::~SlideWidget() -{ -} - -void SlideWidget::initStates() -{ - animPosIn.setTargetObject(this); - animPosIn.setPropertyName("pos"); - animPosIn.setDuration(500); - animPosIn.setEasingCurve(QEasingCurve::OutExpo); - - animPosOut.setTargetObject(this); - animPosOut.setPropertyName("pos"); - animPosOut.setDuration(500); - animPosOut.setEasingCurve(QEasingCurve::OutExpo); - - stateIn.assignProperty(this, "pos", QPoint(0, 0)); - - stateOut.assignProperty(this, "pos", QPoint(0, -this->height())); -} - -void SlideWidget::setStateIn() -{ - qDebug() << "State In"; - emit signalDoStateIn(); -} - -void SlideWidget::setStateOut() -{ - qDebug() << "State Out"; - emit signalDoStateOut(); -} - -void SlideWidget::slotStateInFinished() -{ - qDebug() << "State in finished" << pos(); -} - -void SlideWidget::slotStateOutFinished() -{ - qDebug() << "State out finished" << pos(); -} diff --git a/src/slidewidget.h b/src/slidewidget.h deleted file mode 100755 index e219ceb..0000000 --- a/src/slidewidget.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef SLIDEWIDGET_H -#define SLIDEWIDGET_H - -#include -#include -#include -#include -#include -#include -#include -#include - -class SlideWidget : public QWidget -{ - Q_OBJECT -public: - explicit SlideWidget(QWidget *parent = 0); - virtual ~SlideWidget(); - - virtual void shown() = 0; - - void initStates(); - - void setStateIn(); - void setStateOut(); - -private: - QStateMachine machine; - QState stateIn; - QState stateOut; - - QPropertyAnimation animPosIn; - QPropertyAnimation animPosOut; - -protected: - -signals: - void signalDoStateIn(); - void signalDoStateOut(); - void signalTransitionOutFinished(); - void signalTransitionInFinished(); -public slots: - void slotStateInFinished(); - void slotStateOutFinished(); -}; - -#endif // SLIDEWIDGET_H diff --git a/src/src.pro b/src/src.pro deleted file mode 100755 index a44a2ad..0000000 --- a/src/src.pro +++ /dev/null @@ -1,77 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2010-09-07T13:50:39 -# -#------------------------------------------------- - -# This needs to be removed in order for the binary -# to be chmod to 755 in the debian package. -QT += core gui maemo5 -TARGET = easylist -TEMPLATE = app -DEPENDPATH += . -INCLUDEPATH += . -DESTDIR = ../ - -SOURCES += main.cpp\ - mycheckbox.cpp\ - mainform.cpp \ - mycheckboxcontainer.cpp \ - systemsettings.cpp \ - listform.cpp \ - editform.cpp \ - slidewidget.cpp \ - chooselistform.cpp - -HEADERS +=\ - mycheckbox.h \ - mainform.h \ - mycheckboxcontainer.h \ - systemsettings.h \ - listform.h \ - editform.h \ - slidewidget.h \ - chooselistform.h \ - globals.h - -FORMS += \ - mainform.ui \ - listform.ui \ - editform.ui \ - chooselistform.ui - -CONFIG += mobility - -unix { - QT += dbus - #VARIABLES - PREFIX = /usr - BINDIR = /opt/easylist/bin - DATADIR = $$PREFIX/share - - DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" - - #MAKE INSTALL - INSTALLS += target desktop icon26 icon40 icon48 icon64 - - target.path =$$BINDIR - - desktop.path = $$DATADIR/applications/hildon - desktop.files += $${TARGET}.desktop - - #iconxpm.path = $$DATADIR/pixmap - #iconxpm.files += data/maemo/$${TARGET}.xpm - - icon26.path = $$DATADIR/icons/hicolor/26x26/apps - icon26.files += data/26x26/$${TARGET}.png - - icon40.path = $$DATADIR/icons/hicolor/40x40/apps - icon40.files += data/40x40/$${TARGET}.png - - icon48.path = $$DATADIR/icons/hicolor/48x48/apps - icon48.files += data/48x48/$${TARGET}.png - - icon64.path = $$DATADIR/icons/hicolor/64x64/apps - icon64.files += data/64x64/$${TARGET}.png - -} diff --git a/src/systemsettings.cpp b/src/systemsettings.cpp deleted file mode 100755 index 2600093..0000000 --- a/src/systemsettings.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "systemsettings.h" - -SystemSettings * SystemSettings::instance = 0; -int SystemSettings::instances = 0; - -SystemSettings::SystemSettings() -{ - ++instances; -#ifdef Q_WS_MAEMO_5 - // Connect to DBUS of keyboard slider. - QDBusConnection::systemBus().connect(QString("org.freedesktop.Hal"), - DBUS_KEYBOARD_SLIDE, - QString("org.freedesktop.Hal.Device"), - QString("PropertyModified"), - this, SLOT(slotKeyboardSlide())); -#endif -} - -SystemSettings * SystemSettings::getInstance() -{ - if(instance == 0) - { - instance = new SystemSettings(); - } - return instance; -} - -void SystemSettings::slotKeyboardSlide() -{ - emit signalKeyboardClosed(getKeyboardClosed()); -} - -bool SystemSettings::getKeyboardClosed() -{ - bool closed = false; -#ifdef Q_WS_MAEMO_5 - QDBusInterface propertyInterface("org.freedesktop.Hal", - DBUS_KEYBOARD_SLIDE, - "org.freedesktop.Hal.Device", - QDBusConnection::systemBus()); - closed = propertyInterface.call("GetProperty", "button.state.value").arguments().at(0).toBool(); - qDebug() << "Keyboard is closed:" << closed; -#endif - return closed; -} diff --git a/src/systemsettings.h b/src/systemsettings.h deleted file mode 100755 index 6669115..0000000 --- a/src/systemsettings.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef SYSTEMSETTINGS_H -#define SYSTEMSETTINGS_H - -#include -#include -#include -#include -#include "globals.h" - -class SystemSettings : public QObject -{ - Q_OBJECT -public: - static SystemSettings * getInstance(); - - bool getKeyboardClosed(); -private: - bool landscape; - static SystemSettings * instance; - static int instances; - SystemSettings(); - -public slots: - void slotKeyboardSlide(); -signals: - void signalKeyboardClosed(bool open); -}; - -#endif // SYSTEMSETTINGS_H diff --git a/systemsettings.cpp b/systemsettings.cpp new file mode 100755 index 0000000..5cd7d88 --- /dev/null +++ b/systemsettings.cpp @@ -0,0 +1,56 @@ +#include "systemsettings.h" + +SystemSettings * SystemSettings::instance = 0; +int SystemSettings::instances = 0; + +SystemSettings::SystemSettings() +{ + ++instances; + settings = new QSettings(WILLEM_LIU, EASY_LIST); +#ifdef Q_WS_MAEMO_5 + // Connect to DBUS of keyboard slider. + QDBusConnection::systemBus().connect(QString("org.freedesktop.Hal"), + DBUS_KEYBOARD_SLIDE, + QString("org.freedesktop.Hal.Device"), + QString("PropertyModified"), + this, SLOT(slotKeyboardSlide())); +#endif +} + +SystemSettings * SystemSettings::getInstance() +{ + if(instance == 0) + { + instance = new SystemSettings(); + } + return instance; +} + +void SystemSettings::slotKeyboardSlide() +{ + emit signalKeyboardClosed(getKeyboardClosed()); +} + +bool SystemSettings::getKeyboardClosed() +{ + bool closed = false; +#ifdef Q_WS_MAEMO_5 + QDBusInterface propertyInterface("org.freedesktop.Hal", + DBUS_KEYBOARD_SLIDE, + "org.freedesktop.Hal.Device", + QDBusConnection::systemBus()); + closed = propertyInterface.call("GetProperty", "button.state.value").arguments().at(0).toBool(); + qDebug() << "Keyboard is closed:" << closed; +#endif + return closed; +} + +void SystemSettings::saveCurrentList() +{ + QString listName = settings->value(SELECTED_LIST_NAME, "").toString(); + if(listName.size() == 0) + { + listName = LIST_TEXT; + } + settings->setValue(listName, settings->value(LIST_TEXT, "")); +} diff --git a/systemsettings.h b/systemsettings.h new file mode 100755 index 0000000..80e47e6 --- /dev/null +++ b/systemsettings.h @@ -0,0 +1,33 @@ +#ifndef SYSTEMSETTINGS_H +#define SYSTEMSETTINGS_H + +#include +#include +#include +#include +#include +#include "globals.h" + +class SystemSettings : public QObject +{ + Q_OBJECT +public: + static SystemSettings * getInstance(); + + bool getKeyboardClosed(); + void saveCurrentList(); +private: + bool landscape; + static SystemSettings * instance; + static int instances; + SystemSettings(); + + QSettings * settings; + +public slots: + void slotKeyboardSlide(); +signals: + void signalKeyboardClosed(bool open); +}; + +#endif // SYSTEMSETTINGS_H diff --git a/welcome b/welcome old mode 100644 new mode 100755 -- 1.7.9.5