mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-07 02:45:51 +00:00
rewrite formatters to ext classes
This commit is contained in:
@ -32,8 +32,7 @@ template <class T> class ExtItemAggregator : public AbstractExtItemAggregator
|
||||
{
|
||||
public:
|
||||
explicit ExtItemAggregator(QWidget *parent, const QString type)
|
||||
: AbstractExtItemAggregator(parent)
|
||||
, m_type(type)
|
||||
: AbstractExtItemAggregator(parent, type)
|
||||
{
|
||||
qSetMessagePattern(LOG_FORMAT);
|
||||
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
|
||||
@ -70,7 +69,7 @@ public:
|
||||
for (auto item : m_items) {
|
||||
if (item->tag(_type) != _tag)
|
||||
continue;
|
||||
found = item;
|
||||
found = static_cast<T *>(item);
|
||||
break;
|
||||
}
|
||||
if (found == nullptr)
|
||||
@ -87,7 +86,7 @@ public:
|
||||
for (auto item : m_items) {
|
||||
if (item->number() != _number)
|
||||
continue;
|
||||
found = item;
|
||||
found = static_cast<T *>(item);
|
||||
break;
|
||||
}
|
||||
if (found == nullptr)
|
||||
@ -96,63 +95,31 @@ public:
|
||||
return found;
|
||||
};
|
||||
|
||||
T *itemFromWidget() const
|
||||
{
|
||||
QListWidgetItem *widgetItem = widgetDialog->currentItem();
|
||||
if (widgetItem == nullptr)
|
||||
return nullptr;
|
||||
|
||||
T *found = nullptr;
|
||||
for (auto item : m_items) {
|
||||
QString fileName = QFileInfo(item->fileName()).fileName();
|
||||
if (fileName != widgetItem->text())
|
||||
continue;
|
||||
found = item;
|
||||
break;
|
||||
}
|
||||
if (found == nullptr)
|
||||
qCWarning(LOG_LIB) << "Could not find item by name"
|
||||
<< widgetItem->text();
|
||||
|
||||
return found;
|
||||
};
|
||||
|
||||
QList<T *> items() const { return m_items; };
|
||||
|
||||
int uniqNumber() const
|
||||
{
|
||||
QList<int> tagList;
|
||||
for (auto item : m_items)
|
||||
tagList.append(item->number());
|
||||
int number = 0;
|
||||
while (tagList.contains(number))
|
||||
number++;
|
||||
|
||||
return number;
|
||||
};
|
||||
QList<AbstractExtItem *> items() const { return m_items; };
|
||||
|
||||
private:
|
||||
QList<T *> m_items;
|
||||
QList<AbstractExtItem *> m_items;
|
||||
QList<T *> m_activeItems;
|
||||
QString m_type;
|
||||
|
||||
QList<T *> getItems()
|
||||
void doCreateItem() { return createItem<T>(); }
|
||||
|
||||
QList<AbstractExtItem *> getItems()
|
||||
{
|
||||
// create directory at $HOME
|
||||
QString localDir = QString("%1/awesomewidgets/%2")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation))
|
||||
.arg(m_type);
|
||||
.arg(type());
|
||||
QDir localDirectory;
|
||||
if (localDirectory.mkpath(localDir))
|
||||
qCInfo(LOG_LIB) << "Created directory" << localDir;
|
||||
|
||||
QStringList dirs = QStandardPaths::locateAll(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QString("awesomewidgets/%1").arg(type()),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList names;
|
||||
QList<T *> items;
|
||||
QList<AbstractExtItem *> items;
|
||||
for (auto dir : dirs) {
|
||||
QStringList files = QDir(dir).entryList(QDir::Files, QDir::Name);
|
||||
for (auto file : files) {
|
||||
@ -167,9 +134,10 @@ private:
|
||||
}
|
||||
|
||||
// sort items
|
||||
std::sort(items.begin(), items.end(), [](const T *lhs, const T *rhs) {
|
||||
return lhs->number() < rhs->number();
|
||||
});
|
||||
std::sort(items.begin(), items.end(),
|
||||
[](const AbstractExtItem *lhs, const AbstractExtItem *rhs) {
|
||||
return lhs->number() < rhs->number();
|
||||
});
|
||||
return items;
|
||||
};
|
||||
|
||||
@ -182,96 +150,7 @@ private:
|
||||
for (auto item : m_items) {
|
||||
if (!item->isActive())
|
||||
continue;
|
||||
m_activeItems.append(item);
|
||||
}
|
||||
};
|
||||
|
||||
void repaintList()
|
||||
{
|
||||
widgetDialog->clear();
|
||||
for (auto _item : m_items) {
|
||||
QString fileName = QFileInfo(_item->fileName()).fileName();
|
||||
QListWidgetItem *item
|
||||
= new QListWidgetItem(fileName, widgetDialog);
|
||||
QStringList tooltip;
|
||||
tooltip.append(i18n("Name: %1", _item->name()));
|
||||
tooltip.append(i18n("Comment: %1", _item->comment()));
|
||||
tooltip.append(i18n("Identity: %1", _item->uniq()));
|
||||
item->setToolTip(tooltip.join(QChar('\n')));
|
||||
widgetDialog->addItem(item);
|
||||
}
|
||||
};
|
||||
|
||||
// methods
|
||||
void copyItem()
|
||||
{
|
||||
T *source = itemFromWidget();
|
||||
QString fileName = getName();
|
||||
int number = uniqNumber();
|
||||
QString dir = QString("%1/awesomewidgets/%2")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation))
|
||||
.arg(m_type);
|
||||
if ((source == nullptr) || (fileName.isEmpty())) {
|
||||
qCWarning(LOG_LIB) << "Nothing to copy";
|
||||
return;
|
||||
}
|
||||
QString filePath = QString("%1/%2").arg(dir).arg(fileName);
|
||||
|
||||
T *newItem = static_cast<T *>(source->copy(filePath, number));
|
||||
if (newItem->showConfiguration(configArgs()) == 1) {
|
||||
initItems();
|
||||
repaintList();
|
||||
}
|
||||
};
|
||||
|
||||
void createItem()
|
||||
{
|
||||
QString fileName = getName();
|
||||
int number = uniqNumber();
|
||||
QString dir = QString("%1/awesomewidgets/%2")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation))
|
||||
.arg(m_type);
|
||||
if (fileName.isEmpty()) {
|
||||
qCWarning(LOG_LIB) << "Nothing to create";
|
||||
return;
|
||||
};
|
||||
QString filePath = QString("%1/%2").arg(dir).arg(fileName);
|
||||
|
||||
T *newItem = new T(this, filePath);
|
||||
newItem->setNumber(number);
|
||||
if (newItem->showConfiguration(configArgs()) == 1) {
|
||||
initItems();
|
||||
repaintList();
|
||||
}
|
||||
};
|
||||
|
||||
void deleteItem()
|
||||
{
|
||||
T *source = itemFromWidget();
|
||||
if (source == nullptr) {
|
||||
qCWarning(LOG_LIB) << "Nothing to delete";
|
||||
return;
|
||||
};
|
||||
|
||||
if (source->tryDelete()) {
|
||||
initItems();
|
||||
repaintList();
|
||||
}
|
||||
};
|
||||
|
||||
void editItem()
|
||||
{
|
||||
T *source = itemFromWidget();
|
||||
if (source == nullptr) {
|
||||
qCWarning(LOG_LIB) << "Nothing to edit";
|
||||
return;
|
||||
};
|
||||
|
||||
if (source->showConfiguration(configArgs()) == 1) {
|
||||
initItems();
|
||||
repaintList();
|
||||
m_activeItems.append(static_cast<T *>(item));
|
||||
}
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user